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