如何在python 2中中断线程?

问题描述

我在Python 2.7中遇到了不间断的代码

java -cp ./target/classes 
     com.manuel.jordan.Main
     -javaagent:pathtotheaspectjweaverjar.jar <-- how a program argument parameter

首先,它为什么不间断? (忽略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()