1

有没有办法永久地“暂停”应用程序的主 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,而且可能有更好的方法。

4

3 回答 3

4

使用加入

Thread1.join()
Thread2.join()

另请注意,这setDaemon是旧 API。

Thread1.daemon = True

是现在的首选方式。

于 2011-10-05T12:09:13.543 回答
4

守护线程的全部意义在于阻止应用程序在它们中的任何一个仍在运行时被终止。您显然希望您的线程保持应用程序进程处于活动状态,因此不要让它们成为守护进程。

于 2011-10-05T12:11:47.277 回答
4

如果你不在setDaemon(True)线程上做,只要线程运行,进程就会继续运行。

守护进程标志表明解释器不需要等待线程。当只剩下守护线程时,它将退出。

于 2011-10-05T12:12:14.880 回答