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