python中的守护线程

什么是守护线程:在后台运行,为其他线程提供服务的线程成为守护线程。

为什么要引入守护线程:

thread模块不支持守护线程的概念,当主线程退出时,所有的子线程都将终止,不管它们是否仍在工作,

如果你不希望发生这种行为,就要引入守护线程的概念。

守护线程的调用格式:thread.setDaemon(True)

如何使用守护线程:

1.当只有一个子线程并且为守护线程,那么这个守护线程就会等待主线程运行完毕后挂掉

2.当有多个子线程时,守护线程就会等待所有的子线程运行完毕后,守护线程才会挂掉

什么时候设置守护线程:

如果主线程准备退出时,不需要等待某些子线程执行完成,就可以为这些子线程设置守护线程标记。该标记为真时,表示该线程是不重要的,或者说该线程只是用来等待客户端请求而不做任何其它事情。

使用守护线程的前提:

1.要将一个线程设置为守护线程,需要在启动线程之前执行如下赋值语句:thread.daemon=True。

2.要检查线程的守护状态,也只需要检查这个值即可。一个新的子线程会继承父线程的守护标记。

3.主线程将在所有非守护线程退出之后才退出,换句话说,就是没有存活的非守护线程时。

守护线程在threading模块中的工作方式:

守护线程一般是一个等待客户端请求服务的服务器。如果没有客户端请求,守护线程就是空闲的,如果把一个线程设置为守护线程,就表示这个线程是不重要的,进程退出时就不需要等待这个线程执行完成。

注意:

1、守护线程会在该进程内所有非守护线程全部都运行完毕后,守护线程才会挂掉。

2、守护线程守护的是:当前进程内所有的子线程!

3、主线程在其他非守护线程运行完毕后才算运行完毕,守护线程在此时被回收。

原文地址:https://www.cnblogs.com/mengxinfeng/p/12545530.html