加入守护进程线程

时间:2017-11-19 18:28:56

标签: python multithreading

我正在阅读有关守护程序线程的信息,并且遇到了这个SO页面,答案中的评论说:

  

但加入一个被妖魔化的线程最有可能开启   麻烦!我现在正在考虑删除我的小调用join()   守护程序线程的图表

我理解守护程序线程的用途和原因但是,假设您必须等待守护程序线程完成它正在做的事情,如果调用join()被认为是一个很麻烦的话,你会怎么做? / p>

1 个答案:

答案 0 :(得分:2)

如果你想能够.join一个线程,最好不要让它成为一个守护进程。守护程序线程适用于您希望线程执行其操作并且您不太关心何时或是否完成。

制作守护程序线程的重点是,当没有非守护程序线程处于活动状态时程序将退出。

来自the threading docs

  

线程可以标记为“守护程序线程”。这个的意义   flag是只有守护进程线程时整个Python程序退出   离开了。初始值继承自创建线程。该   可以通过守护进程属性或守护进程构造函数设置flag   参数。

你实际上可以在守护程序线程上调用.join,但它通常被认为是不好的做法。

你可以得到一个守护程序线程,在它完成之前设置一个事件,一个或多个其他线程检查,但是使用非守护程序线程和.join它更简单。

此答案的早期版本声称您不能.join守护程序线程。那是不对的。我和虚拟线程混在一起。对于那个很抱歉。 :oops: