在python中,不能直接杀死线程。
如果你真的不需要线程(!),而不是使用
threading
package
,即使用
multiprocessing
package
. 在这里,要终止进程,只需调用方法:
yourProcess.terminate() # kill the process!
python将终止您的进程(在unix上通过sigterm信号,而在windows上通过
TerminateProcess()
打电话)使用队列或管道时请注意使用!(它可能损坏队列/管道中的数据)
请注意
multiprocessing.Event
以及
multiprocessing.Semaphore
工作方式完全相同
threading.Event
以及
threading.Semaphore
分别是。事实上,第一批是Latters的克隆。
如果你真的需要使用线程,没有办法直接杀死它。但是,您可以做的是使用
“守护进程线程”
. 实际上,在python中,线程可以标记为
守护进程
:
yourThread.daemon = True # set the Thread as a "daemon thread"
当没有活动的非守护进程线程时,主程序将退出。换句话说,当主线程(当然是非守护进程线程)完成其操作时,即使仍有一些守护进程线程在工作,程序也将退出。
注意,有必要将线程设置为
daemon
之前
start()
方法被调用!
你当然可以也应该
守护进程
即使有
multiprocessing
. 在这里,当主进程退出时,它会尝试终止其所有守护子进程。
最后,请注意
sys.exit()
和
os.kill()
不是选择。