您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python – Catch键盘正在等待事件的程序中断

5b51 2022/1/14 8:20:49 python 字数 2067 阅读 448 来源 www.jb51.cc/python

以下程序挂起终端,使其忽略Ctrl C.这是相当烦人的,因为每次其中一个线程挂起时我必须重新启动终端.有没有办法在等待事件时捕获KeyboardInterrupt?import threading def main(): finished_event = threading.Event() startThread(finished_event

概述

以下程序挂起终端,使其忽略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')

可能有bugsCtrl+C相关.测试它是否适用于您的环境.

旧民意调查答案:

您可以尝试允许解释器运行主线程:

while not finished_event.wait(.1): # timeout in seconds
    pass

如果您只想等到子线程完成:

while thread.is_alive():
    thread.join(.1)

总结

以上是编程之家为你收集整理的python – Catch键盘正在等待事件的程序中断全部内容,希望文章能够帮你解决python – Catch键盘正在等待事件的程序中断所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶