根据文档:http://docs.python.org/2/library/thread
当主线程退出时,其他线程是否继续运行由系统定义。在使用本机线程实现的 SGI IRIX 上,它们会继续运行。在大多数其他系统上,它们被杀死而不执行 try...finally 子句或执行对象析构函数。
另一篇文档 (http://docs.python.org/2/library/threading) 中指出:
线程可以被标记为“守护线程”。这个标志的意义是当只剩下守护进程时,整个 Python 程序就会退出。初始值从创建线程继承。
这里只讨论非守护线程。因为第一段引用没有特殊提到非守护线程,所以我认为即使主线程退出,非守护线程也应该被杀死。然而,第二段引用表明情况并非如此。事实上,当主线程退出时,非守护线程确实不会被杀死。那么第一段引用有什么意义呢?
另一篇文档 (http://docs.python.org/2/library/threading) 中指出:
线程可以被标记为“守护线程”。这个标志的意义是当只剩下守护进程时,整个 Python 程序就会退出。初始值从创建线程继承。
这里只讨论非守护线程。因为第一段引用没有特殊提到非守护线程,所以我认为即使主线程退出,非守护线程也应该被杀死。然而,第二段引用表明情况并非如此。事实上,当主线程退出时,非守护线程确实不会被杀死。那么第一段引用有什么意义呢?
thread
模块将所有内容都作为守护线程处理,而threading
则添加了“非守护”线程的概念。 - Joachim Isaksson