Python 3 KeyboardInterrupt多线程

时间:2018-07-24 22:53:52

标签: python python-3.x python-multithreading

我正在尝试让主线程使用以下代码等待其工作线程完成,但是当我尝试使用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()

更新 什么都没打印。所有后台线程都是守护程序。

1 个答案:

答案 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()