我正在尝试让主线程使用以下代码等待其工作线程完成,但是当我尝试使用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()
更新 什么都没打印。所有后台线程都是守护程序。
答案 0 :(得分:1)
import threading
import sys
import time
exit = threading.Event()
#pass it to the threads
try:
print("hi")
time.sleep(20)
print('Goodbye')
sys.exit()
except KeyboardInterrupt:
print('Interrupted')
sys.exit()
请尝试使用上面的语句来测试您的代码。我已经对其进行了测试,并且对我来说工作正常。
当您使用exit.wait()而没有给出任何超时时,它运行了无限秒。因此,请花点时间作为争论。 请遵循以下代码:
exit = threading.Event()
#pass it to the threads
try:
print("hi")
exit.wait(5)
print('Goodbye')
sys.exit()
except KeyboardInterrupt:
print('Interrupted')
sys.exit()