您将线程设置为守护进程,但还需要保持“主”线程处于活动状态,以侦听信号或键盘中断
使用信号的简单工作实现:
import threading
import time
import sys
import signal
class FooThread(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
def run(self):
while not self.stop_flag:
print(1)
time.sleep(1)
stop_flag = False
def main():
t = FooThread()
def signal_handler(signal, frame):
print('You pressed Ctrl+C!')
t.stop_flag = True
t.join()
signal.signal(signal.SIGINT, signal_handler)
t.start()
while not t.stop_flag:
time.sleep(1)
if __name__ == "__main__":
main()