第十五章、并发编程之守护线程
第十五章、并发编程之守护线程
# 守护线程 守护的是非守护线程(主线程也是非守护线程)
from threading import Thread,enumerate,currentThread
import time
def task():
print('守护线程开始')
print(currentThread())
time.sleep(20)
# print('守护线程结束')
def task2():
print('子线程 start')
time.sleep(5)
print(enumerate())
print('子线程 end')
if __name__ == '__main__':
t1 = Thread(target=task)
t2 = Thread(target=task2)
t1.daemon = True
t2.start()
t1.start()
print('主')
守护线程:非守护线程代码运行完毕,守护线程也就结束(守护的是非守护线程)
主线程在其他非守护线程运行完毕后才算结束(守护线程在此时就会被回收
强调:主线程也是非守护线程(进程包含了线程)
总结:引入守护进程的原因是主线程的结束意味着进程结束,进程整体的资源都会被回收,而进程必须保证非守护线程都运行完毕后才能结束
守护进程和守护线程的区别
- 守护进程:主进程代码运行完毕,守护进程也就结束
- 守护线程:非守护线程运行完毕,守护线程结束