Python暂停线程执行

1 投票
3 回答
1638 浏览
提问于 2025-04-17 03:43

有没有办法让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),那么只要这些线程还在运行,整个程序就会一直保持运行。

守护线程的标志表示解释器不需要等这个线程结束。当程序里只剩下守护线程时,程序就会自动退出。

撰写回答