我读到了关于守护进程线程的文章,看到了这个SO页面,答案下面的评论说:
但加入一个妖魔化的线程很可能会打开一整罐麻烦我现在正在考虑删除我的little中的join()调用守护进程线程的图表
我知道守护进程线程的用途和原因,但是,假设您必须等待守护进程线程完成它正在做的事情,如果调用join()
被认为是一个很大的麻烦,您会怎么做?
如果您希望能够.join
线程,最好不要将其作为守护进程。守护程序线程是为你希望线程完成它的任务而设计的,你不太关心它何时或是否完成。
制作守护进程线程的意义在于,当没有任何非守护进程线程处于活动状态时,程序将退出。
来自线程文档:
线程可以标记为"守护进程线程"。这一点的意义标志是整个Python程序在只有后台进程线程时退出剩下的。初始值是从创建线程继承的。这个可以通过守护程序属性或守护程序构造函数设置标志论点
您实际上可以在守护进程线程上调用.join
,但通常认为这不是一种好的做法。
您可以让一个守护进程线程在事件结束前设置一个事件,由一个或多个其他线程检查,但只使用非守护进程线程和.join
更简单。
这个答案的早期版本声称您不能.join
守护进程线程。这是不正确的。我被假线程搞混了。很抱歉oops: