python 进程守护,守护线程与非守护线程
有一种线程是在后台运行的,它的任务是为其他线程提供服务。这种线程称为“守护线程”,也称为“守护线程”或“仙女线程”。Python解释器的垃圾收集线程是典型的后台线程。
后台线程有一个特点。如果所有前台线程都死了,后台线程也会自动死。
调用Thread对象的daemon属性将指定线程设置为后台线程。下面的程序将指定的线程设置为后台线程,可以看到当所有前台线程都死了,后台线程也死了。当整个虚拟机只剩下后台线程时,程序就没有继续运行的必要了,于是程序退出。
导入线程
#定义后台线程的线程执行器和普通线程没什么区别。
污损(最大):
最大范围:
print(threading.current_thread()。名称字符串(I))
t=threading . thread(target=action,args=(100,),name=后台线程)
#将该线程设置为后台线程
#您也可以在创建线程对象时通过守护进程参数将它设置为后台线程。
t.daemon=True
#启动后台线程
启动()
(10):
print(threading.current_thread()。名称字符串(I))
# -在这里,前台线程(主线程)结束。
#后台线程也应该随之结束。在上面的程序中,首先将T线程设置为后台线程(第10行代码),然后启动线程。本来这个线程应该执行到I等于99,但是在运行程序的时候不难发现,这个后台线程不能运行到99,因为当主线程,也就是程序中唯一的前台线程运行的时候,程序会主动退出,所以后台线程就结束了。
从上面的程序可以看出,主线程默认是前台线程,T线程也默认是前台线程。但并不是所有线程默认都是前台线程,有些线程默认是后台线程。前台线程创建的子线程默认为前台线程,后台线程创建的子线程默认为后台线程。
可以看出,创建后台线程有两种方式:
将活动线程的daemon属性设置为True。
后台线程启动的线程默认为后台线程。
注意,前台线程死亡后,Python解释器会通知后台线程其死亡,但从收到指令到响应需要一段时间。如果要将线程设置为后台线程,则必须在线程启动之前进行设置。也就是说,必须在调用start()方法之前将daemon属性设置为True,否则会抛出RuntimeError异常。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。