设置Python线程为守护线程有什么区别
把一个Python线程设置为守护线程,使用 thread.setDaemon(True)
这行代码有什么区别呢?
1 个回答
24
守护线程不会阻止应用程序退出。程序会在所有非守护线程(包括主线程)完成后结束。
所以一般来说,如果你在后台做一些事情,可能想把这个线程设置为守护线程,这样在应用程序退出时就不需要等这个线程的功能执行完。
举个例子,如果你在写一个图形界面应用,用户关闭了主窗口,程序应该退出。但是如果还有非守护线程在运行,程序就不会退出。
根据文档:http://docs.python.org/library/threading.html#threading.Thread.daemon
它的初始值是从创建它的线程继承来的;主线程不是守护线程,因此在主线程中创建的所有线程默认都是守护线程 = False。
当没有存活的非守护线程时,整个Python程序会退出。