概述
以下程序挂起终端,使其忽略Ctrl C.这是相当烦人的,因为每次其中一个线程挂起时我必须重新启动终端.
有没有办法在等待事件时捕获KeyboardInterrupt?
import threading
def main():
finished_event = threading.Event()
startThread(finished_event)
finished_event.wait()#I want to stop the program here
print('done!')
def startThread(evt):
"""Start a thread that will trigger evt when it is done"""
#evt.set()
if __name__ == '__main__':
main()
#!/usr/bin/env python3
import threading
def f(event):
while True:
pass
# never reached,otherwise event.set() would be here
event = threading.Event()
threading.Thread(target=f,args=[event],daemon=True).start()
try:
print('Press Ctrl+C to exit')
event.wait()
except KeyboardInterrupt:
print('got Ctrl+C')
可能有bugs与Ctrl+C相关.测试它是否适用于您的环境.
旧民意调查答案:
您可以尝试允许解释器运行主线程:
while not finished_event.wait(.1): # timeout in seconds
pass
如果您只想等到子线程完成:
while thread.is_alive():
thread.join(.1)
总结
以上是编程之家为你收集整理的python – Catch键盘正在等待事件的程序中断全部内容,希望文章能够帮你解决python – Catch键盘正在等待事件的程序中断所遇到的程序开发问题。
如果您也喜欢它,动动您的小指点个赞吧