我正在尝试使用以下代码使主线程等待其工作线程完成,但当我尝试使用Ctrl+C中断时,它不会停止。
import threading
import sys
exit = threading.Event()
#pass it to the threads
try:
exit.wait()
print('Goodbye')
sys.exit()
except KeyboardInterrupt:
print('Interrupted')
sys.exit()
更新 没有任何输出。所有后台线程都是守护程序。
wait
操作都应该可以被信号中断,并且一旦被中断,Python将立即将SIGINT处理为KeyboardInterrupt
。但是在Windows上...我不确定它是如何工作的,但你可能需要更多的东西。 - abarnertexit.wait()
阻塞着,还没有打印出Goodbye
,是这样吗?(如果不是,那么它已经离开了try
/except
块,所以显然try
无法捕获异常。) - abarnert