以下程序掛起終端,使其忽略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()
這可以做到沒有輪詢? – Navin
我不知道。它與投票有關嗎?爲什麼輪詢不好?你可以測試'time.sleep(large_timeout)'是否被'Ctrl + C'中斷。儘管它仍在輪詢,它可能會盡快對「Ctrl + C」做出反應。如果您需要對事件做出響應,那麼應該在'finished_event.set()'上作出反應的代碼應該放入另一個線程中。 – jfs
那麼,即使我不需要響應,我也傾向於避免輪詢,但我想這是唯一的解決方案。 – Navin