Python暂停线程执行

时间:2011-10-05 12:07:09

标签: python python-multithreading

有没有办法永久地“暂停”应用程序的主python线程?

我有一些代码可以触发两个线程

class start():
    def __init__(self):
        Thread1= functions.threads.Thread1()
        Thread1.setDaemon(True)
        Thread1.start()
        Thread2= functions.threads.Thread2()
        Thread2.setDaemon(True)
        Thread2.start()

        #Stop thread here

此刻,当程序到达该函数的末尾时它退出(主线程之后没有其他事情可以执行),杀死无限运行的线程(循环)。如何阻止主进程退出?我可以使用while True: None循环来实现它,但它使用了大量的CPU,并且可能有更好的方法。

3 个答案:

答案 0 :(得分:4)

使用join

Thread1.join()
Thread2.join()

另请注意,setDaemon是旧API。

Thread1.daemon = True

现在是首选方式。

答案 1 :(得分:4)

守护程序线程的重点是阻止应用程序在其中任何一个仍在运行时被终止。你显然希望你的线程能够使应用程序进程保持活动状态,所以不要让它们成为守护进程。

答案 2 :(得分:4)

如果你没有对线程执行setDaemon(True),只要线程运行,进程就会继续运行。

守护程序标志表示解释程序无需等待线程。当只剩下守护程序线程时它将退出。