Python暂停线程执行
有没有办法让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 个回答
4
使用 join 方法:
Thread1.join()
Thread2.join()
另外要注意,setDaemon
是旧的用法。
Thread1.daemon = True
现在推荐使用的是这种方法。
4
守护线程的主要目的是让应用程序在它们仍在运行时,不会被强制关闭。也就是说,如果你希望你的线程能够让应用程序继续运行,那就不要把它们设置成守护线程。
4
如果你不在线程上使用 setDaemon(True)
,那么只要这些线程还在运行,整个程序就会一直保持运行。
守护线程的标志表示解释器不需要等这个线程结束。当程序里只剩下守护线程时,程序就会自动退出。