显式加入python线程?

时间:2010-06-21 20:55:27

标签: multithreading background python

我需要在python程序中启动一些线程。线程执行后台任务可能需要很长时间,因此我不想阻止等待任务发生的主线程。

Python提供了使用Thread.join()和Thread.isAlive()“收获”线程的能力。但我实际上并不关心线程何时完成。我满足于启动线程,让它做到这一点,再也不用担心了。

问题是,我是否需要保持对我开始的Thread对象的引用,以便以后可以加入()它们?或者我可以让Thread对象的引用超出范围而不用担心吗?在这种情况下,有没有“正确”的事情要做?

1 个答案:

答案 0 :(得分:1)

您不必明确join个帖子 - 只需确保它们没有“守护”(将daemon属性保留为默认值False),这样他们就可以了ll保持进程活着直到它们全部完成(如果你创建了你的线程守护进程,那么你必须确保主线程在所有相关线程完成之前不会终止,否则线程将被操作系统杀死)。 / p>

我认为正确的事情是最简单的:忘记你的“后台线程”,只需要让它们成为非守护进程(这是它们的默认状态)。