今天写一个小工具,开启多个线程,在子线程里循环执行任务,发现不能退出程序,然后折腾了半天,还是退出不了,最后发现,原来是个bug
先上简化了的代码:
import sys
import threading
import signal
import time
class myThread(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
def run(self):
while True:
time.sleep(1)
def handler(signum, frame):
print("exit")
sys.exit()
if __name__ == "__main__":
signal.signal(signal.SIGINT, handler)
threads = []
for _ in range(0,2):
t = myThread()
t.setDaemon(True)
threads.append(t)
t.start()
for _ in range(0,2):
t.join()
# while True:pass
主线程里开启了两个子线程,子线程啥事都不干,醒了就睡,睡醒了接着睡,如此循环往复。并将它们设为daemon线程,
按我的理解daemon线程就是指当主线程代码执行完退出后,那么daemon子线程也会