如何杀死python中的线程
问题内容:
这个问题已经在这里有了答案 :
有什么办法可以杀死线程吗?
(27个答案)
4年前关闭。
我使用以下代码启动线程。
t = thread.start_new_thread(myfunction)
我如何杀死t
另一个线程中的线程。因此,就代码而言,基本上,我希望能够做到这一点。
t.kill()
请注意,我正在使用Python 2.4。
问题答案:
如果您的线程正忙于执行Python代码,那么您将面临比无法杀死它更大的问题。(经过一番研究,我了解到解释器会定期发布GIL,因此前面的声明是虚假的。但是,其余注释仍然有效。)
GIL将阻止其他任何线程运行您用来执行杀死操作的任何指令。
您的线程必须以协作方式编写。也就是说,它必须定期使用诸如信号量之类的信令对象进行检入,主线程可以使用该对象来指示工作线程自愿退出。
while not sema.acquire(False):
# Do a small portion of work…
要么:
for item in work:
# Keep working…
# Somewhere deep in the bowels…
if sema.acquire(False):
thread.exit()