2

所以我有一个 python 脚本,如你所料,我在命令提示符下运行

python myscript.py

在我的脚本中,我有一行拦截 Ctrl+C 并假设整理一些东西并关闭脚本。

def check_for():
    while True:
        # Perform check and operation if needed

if __name__ == '__main__': 
    try:
        threading.Thread(target=check_for).start()
        # Perform script duties

    except KeyboardInterrupt:
        print "Tidying up a few things"
        # Performs tidying duties
        sys.exit()

但它似乎并没有真正退出程序。它打印消息,所以我知道它收到了那个中断信号,但是我在命令提示符下没有控制权,当我在任务管理器中查看时,我看到它的 python 进程仍在运行。我只有在结束该过程后才能重新获得控制权。事实上,即使程序在没有被中断的情况下正常运行完成,该过程仍然存在。

我的程序确实产生了子线程,这就是为什么我使用sys.exit()而不是我听说不能例外的其他方法并做更多的突然结束。

难道我做错了什么?是否有这样做的跨平台方法(这就是我认为的 sys.exit() 是)?

编辑:所以我已经隔离了这个问题。我创建了一个小测试脚本,似乎当我创建一个线程时它不会死,因此程序永远不会退出。我更改了初始代码以显示设置。

4

0 回答 0