我在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()