python并发编程之多线程守护系列互斥锁生产者消费者模型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python并发编程之多线程守护系列互斥锁生产者消费者模型相关的知识,希望对你有一定的参考价值。

无论是进程还是线程,都遵循:守护xxx会等待主xxx运行完毕后被销毁

需要强调的是:运行完毕并非终止运行

#1.对主进程来说,运行完毕指的是主进程代码运行完毕

#2.对主线程来说,运行完毕指的是主线程所在的进程内所有非守护线程统统运行完毕,主线程才算运行完毕

详细解释:
#1 主进程在其代码结束后就已经算运行完毕了(守护进程在此时就被回收),然后主进程会一直等非守护的子进程都运行完毕后回收子进程的资源(否则会产生僵尸进程),才会结束,

#2 主线程在其他非守护线程运行完毕后才算运行完毕(守护线程在此时就被回收)。因为主线程的结束意味着进程的结束,进程整体的资源都将被回收,而进程必须保证非守护线程都运行完毕后才能结束。
from threading import Thread
import time
def sayhi(name):
    time.sleep(2)
    print(‘%s say hello‘ %name)

if __name__ == ‘__main__‘:
    t=Thread(target=sayhi,args=(‘egon‘,))
    t.setDaemon(True) #必须在t.start()之前设置
    t.start()

    print(‘主线程‘)
    print(t.is_alive())
    ‘‘‘
    主线程
    True
    ‘‘‘
自我总结认知:守护进程可以认为是一个特殊的子进程,某些时候有的需求要求主进程一结束,某个具有特殊功能的进程也结束,这就是守护进程了,守护进程的功能从一开始设计就跟随主进程而动。
守护线程基本上可以认为和守护进程一样,但是他们之间存在一些区别。守护线程无论守护的是主线程还是子线程,仍然会随着主进程结束而结束。也就是守护线程结束与否看的不是主线程, 而是主进程。




以上是关于python并发编程之多线程守护系列互斥锁生产者消费者模型的主要内容,如果未能解决你的问题,请参考以下文章

python并发编程之多进程:互斥锁(同步锁)&进程其他属性&进程间通信(queue)&生产者消费者模型

并发编程之多进程

并发编程: 生产消费模型死锁与Rlock线程守护线程信号量锁

Python并发编程04/多线程

并发编程目录

python并发编程之多线程