python中的thread.start_new_thread和threading.Thread.start有什么不同?
我注意到,当调用start_new_thread时,只要调用线程终止,新线程就会终止。threading.Thread.start正好相反:调用线程等待其他线程终止。
发布于 2011-05-04 19:11:07
thread模块是Python的低级线程API。不推荐直接使用它,除非你真的需要。API模块是一个构建在thread之上的高级threading。Thread.start方法实际上是使用thread.start_new_thread实现的。
Thread的daemon属性必须在调用start之前设置,指定线程是否应该是守护进程。当没有活动的非守护进程线程时,整个Python程序就会退出。缺省情况下,daemon为False,因此该线程不是守护进程,因此该进程将等待其所有非守护进程线程退出,这是您正在观察的行为。
P.S. start_new_thread真的是非常低级的。它只是Python核心线程启动器的一个薄薄的包装器,该启动器本身调用操作系统线程生成函数。
发布于 2011-05-04 19:05:19
查看threading.Thread.daemon标志-基本上,只要没有非守护进程线程在运行,解释器就会终止。
https://stackoverflow.com/questions/5882362
复制相似问题