如何在python 2中中断线程



我在Python 2.7中遇到了一个不可中断的代码。

from time import sleep
import threading
def fun():
for i in range(100):
print(i)
sleep(0.1)
if __name__ == '__main__':
threading.Timer(1, fun).start()

首先,它为什么是不间断的?(它忽略SIGINT(
在Python 3中,此代码中断良好。

第二,在它完成循环之前,我应该对它进行哪些更改以响应SIGINT
在我的实际情况下,这是一个无限循环:。(

我还不确定为什么会发生这种情况,但Python 3.2错误修复报告中提到了这种现象。

我通过展开以下代码找到了一个解决方法:

def fun():
while True:
... my code ...
sleep(0.1)
if __name__ == '__main__':
threading.Timer(1, fun).start()

进入:

def fun():
... my code ...
threading.Timer(0.1, fun).start()
if __name__ == '__main__':
threading.Timer(1, fun).start()

最新更新