Python守护线程用法实例


Posted in Python onJune 23, 2017

本文实例讲述了Python守护线程用法。分享给大家供大家参考,具体如下:

如果你设置一个线程为守护线程,就表示你在说这个线程是不重要的,在进程退出的时候,不用等待这个线程退出。如果你的主线程在退出的时候,不用等待那些子线程完成,那就设置这些线程的daemon属性。即在线程开始(thread.start())之前,调用setDeamon()函数,设定线程的daemon标志。(thread.setDaemon(True))就表示这个线程“不重要”。

如果你想等待子线程完成再退出,那就什么都不用做,或者显示地调用thread.setDaemon(False),设置daemon的值为false。新的子线程会继承父线程的daemon标志。整个Python会在所有的非守护线程退出后才会结束,即进程中没有非守护线程存在的时候才结束。

看下面的例子:

import time
import threading
def fun():
  print "start fun"
  time.sleep(2)
  print "end fun"
print "main thread"
t1 = threading.Thread(target=fun,args=())
#t1.setDaemon(True)
t1.start()
time.sleep(1)
print "main thread end"

结果:

main thread
start fun
main thread end
end fun

结论:程序在等待子线程结束,才退出了。

设置:setDaemon 为True

import time
import threading
def fun():
  print "start fun"
  time.sleep(2)
  print "end fun"
print "main thread"
t1 = threading.Thread(target=fun,args=())
t1.setDaemon(True)
t1.start()
time.sleep(1)
print "main thread end"

结果:

main thread
start fun
main thread end

结论:程序在主线程结束后,直接退出了。 导致子线程没有运行完。

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
用map函数来完成Python并行任务的简单示例
Apr 02 Python
使用Python生成url短链接的方法
May 04 Python
python编程通过蒙特卡洛法计算定积分详解
Dec 13 Python
Python Numpy 数组的初始化和基本操作
Mar 13 Python
Python 实现删除某路径下文件及文件夹的实例讲解
Apr 24 Python
解决Python requests库编码 socks5代理的问题
May 07 Python
Python使用googletrans报错的解决方法
Sep 25 Python
Django admin model 汉化显示文字的实现方法
Aug 12 Python
详解Python3定时器任务代码
Sep 23 Python
python中利用matplotlib读取灰度图的例子
Dec 07 Python
Flask和pyecharts实现动态数据可视化
Feb 26 Python
利用Python第三方库实现预测NBA比赛结果
Jun 21 Python
python使用fcntl模块实现程序加锁功能示例
Jun 23 #Python
Django自定义认证方式用法示例
Jun 23 #Python
Django实现的自定义访问日志模块示例
Jun 23 #Python
详解Python文本操作相关模块
Jun 22 #Python
python字符串过滤性能比较5种方法
Jun 22 #Python
Python编程实现的简单Web服务器示例
Jun 22 #Python
Python实现复杂对象转JSON的方法示例
Jun 22 #Python
You might like
阿拉伯的咖啡与水烟
2021/03/03 咖啡文化
php中将指针移动到数据集初始位置的实现代码[mysql_data_seek]
2012/11/01 PHP
非常精妙的PHP递归调用与静态变量使用
2012/12/16 PHP
PHP应用JSON技巧讲解
2013/02/03 PHP
Yii中CGridView实现批量删除的方法
2015/12/28 PHP
php中namespace及use用法分析
2016/12/06 PHP
PHP面向对象程序设计子类扩展父类(子类重新载入父类)操作详解
2019/06/14 PHP
Laravel6.0.4中将添加计划任务事件的方法步骤
2019/10/15 PHP
JS 获取span标签中的值的代码 支持ie与firefox
2009/08/24 Javascript
用jquery实现学校的校历(asp.net+jquery ui 1.72)
2010/01/01 Javascript
ie8 不支持new Date(2012-11-10)问题的解决方法
2013/07/31 Javascript
javascript实现文本域写入字符时限定字数
2014/02/12 Javascript
同一个网页中实现多个JavaScript特效的方法
2015/02/02 Javascript
JavaScript 事件绑定及深入
2015/04/13 Javascript
Javascript HTML5 Canvas实现的一个画板
2020/04/12 Javascript
JavaScript函数节流概念与用法实例详解
2016/06/20 Javascript
jQuery多级联动下拉插件chained用法示例
2016/08/20 Javascript
canvas学习之API整理笔记(二)
2016/12/29 Javascript
koa socket即时通讯的示例代码
2018/09/07 Javascript
微信小程序首页的分类功能和搜索功能的实现思路及代码详解
2018/09/11 Javascript
详解Vue3.0 前的 TypeScript 最佳入门实践
2019/06/18 Javascript
详解为element-ui的Select和Cascader添加弹层底部操作按钮
2020/02/07 Javascript
通过实例了解JS执行上下文运行原理
2020/06/17 Javascript
JavaScrip如果基于url实现图片下载
2020/07/03 Javascript
解决antd 表单设置默认值initialValue后验证失效的问题
2020/11/02 Javascript
Python入门篇之面向对象
2014/10/20 Python
Python实现随机创建电话号码的方法示例
2018/12/07 Python
用xpath获取指定标签下的所有text的实例
2019/01/02 Python
django框架模板中定义变量(set variable in django template)的方法分析
2019/06/24 Python
比利时的在线灯具店:Lampen24.be
2019/07/01 全球购物
全球最大运动品牌的男装、女装和童装官方库存商:A&A Sports
2021/01/17 全球购物
中间件分为哪几类
2016/09/18 面试题
爱的奉献演讲稿
2014/09/10 职场文书
2015年体检中心工作总结
2015/05/27 职场文书
劳保用品管理制度范本
2015/08/06 职场文书
Go归并排序算法的实现方法
2022/04/06 Golang