#1、守护线程要注意的坑:下面代码只能打印出子线程开始,无法打印出子线程执行完毕,因为主线程在t.start()以后就结束了, #而子线程要睡眠1秒,所以子线程守护线程随着主线程的结束而结束了。 from threading import Thread import time def func(): print('子线程开始') time.sleep(1) print('子线程执行完毕') t = Thread(target=func) t.setDaemon(True) t.start() # 子线程开始 #2、守护线程要注意的坑:关于join: from threading import Thread import time def func(): print('子线程开始') time.sleep(1) print('子线程执行完毕') t = Thread(target=func) t.setDaemon(True) t.start() t1 = Thread(target=func) t1.start() t1.join() #主线程等待t1子线程的结束而结束,守护线程t等待主线程的结束而结束。 # 子线程开始 # 子线程开始 # 子线程执行完毕 # 子线程执行完毕 #3、守护线程:守护线程随着主线程的结束而结束。 from threading import Thread def func(): while True: print('&') t = Thread(target=func) t.setDaemon(True) #守护线程要写在开始的前面。 t.start() for i in range(10): print('*'*i)