python中的守护线程
2024-10-09 06:11:47
什么是守护线程:在后台运行,为其他线程提供服务的线程成为守护线程。
为什么要引入守护线程:
thread模块不支持守护线程的概念,当主线程退出时,所有的子线程都将终止,不管它们是否仍在工作,
如果你不希望发生这种行为,就要引入守护线程的概念。
守护线程的调用格式:thread.setDaemon(True)
如何使用守护线程:
1.当只有一个子线程并且为守护线程,那么这个守护线程就会等待主线程运行完毕后挂掉
2.当有多个子线程时,守护线程就会等待所有的子线程运行完毕后,守护线程才会挂掉
什么时候设置守护线程:
如果主线程准备退出时,不需要等待某些子线程执行完成,就可以为这些子线程设置守护线程标记。该标记为真时,表示该线程是不重要的,或者说该线程只是用来等待客户端请求而不做任何其它事情。
使用守护线程的前提:
1.要将一个线程设置为守护线程,需要在启动线程之前执行如下赋值语句:thread.daemon=True。
2.要检查线程的守护状态,也只需要检查这个值即可。一个新的子线程会继承父线程的守护标记。
3.主线程将在所有非守护线程退出之后才退出,换句话说,就是没有存活的非守护线程时。
守护线程在threading模块中的工作方式:
守护线程一般是一个等待客户端请求服务的服务器。如果没有客户端请求,守护线程就是空闲的,如果把一个线程设置为守护线程,就表示这个线程是不重要的,进程退出时就不需要等待这个线程执行完成。
注意:
1、守护线程会在该进程内所有非守护线程全部都运行完毕后,守护线程才会挂掉。
2、守护线程守护的是:当前进程内所有的子线程!
3、主线程在其他非守护线程运行完毕后才算运行完毕,守护线程在此时被回收。
最新文章
- tp框架实现验证码
- Nodejs初阶之express
- 自定义Docker容器的 hostname
- Android客户端性能优化(魅族资深工程师毫无保留奉献)
- weedfs getsockopt: connection timed out
- 关于网页pc端以及移动端的兼容性——测试
- 机器学习&;数据挖掘笔记_15(关于凸优化的一些简单概念)
- 如何安装PANABIT?
- 设计模式 ( 十八 ) 策略模式Strategy(对象行为型)
- C# DateTime 日期加1天 减一天 加一月 减一月 等方法(转)
- C# textbox 滚动条 随文本输入 滚动
- vim配色方案
- C++ Prime:sizeof运算符
- assert断言
- MVP框架 – Ted Mosby的软件架构
- 升讯威微信营销系统开发实践:(1)功能概要与架构设计( 完整开源于 Github)
- 说明split()与join()函数的区别?
- 配置httpd支持https
- Python:ModuleNotFoundError: No module named 'windows'
- 【maven】之打包war依赖子项目jar