目录
第十五章、并发编程之守护线程
# 守护线程 守护的是非守护线程(主线程也是非守护进程)from threading import Thread,enumerate,currentThreadimport timedef 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('主')
守护线程:非守护线程代码运行完毕,守护线程也就结束(守护的是非守护线程)
主线程在其他非守护线程运行完毕后才算结束(守护线程在此时就会被回收
强调:主线程也是非守护线程(进程包含了线程)
总结:引入守护进程的原因是主线程的结束意味着进程结束,进程整体的资源都会被回收,而进程必须保证非守护线程都运行完毕后才能结束
守护进程和守护线程的区别
- 守护进程:主进程代码运行完毕,守护进程也就结束
- 守护线程:非守护线程运行完毕,守护线程结束