设置Python线程为守护线程有什么区别

11 投票
1 回答
6934 浏览
提问于 2025-04-15 14:15

把一个Python线程设置为守护线程,使用 thread.setDaemon(True) 这行代码有什么区别呢?

1 个回答

24

守护线程不会阻止应用程序退出。程序会在所有非守护线程(包括主线程)完成后结束。

所以一般来说,如果你在后台做一些事情,可能想把这个线程设置为守护线程,这样在应用程序退出时就不需要等这个线程的功能执行完。

举个例子,如果你在写一个图形界面应用,用户关闭了主窗口,程序应该退出。但是如果还有非守护线程在运行,程序就不会退出。

根据文档:http://docs.python.org/library/threading.html#threading.Thread.daemon

它的初始值是从创建它的线程继承来的;主线程不是守护线程,因此在主线程中创建的所有线程默认都是守护线程 = False。

当没有存活的非守护线程时,整个Python程序会退出。

撰写回答