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 相关文章推荐
pygame学习笔记(5):游戏精灵
Apr 15 Python
Python基于动态规划算法计算单词距离
Jul 25 Python
Python中交换两个元素的实现方法
Jun 29 Python
Window 64位下python3.6.2环境搭建图文教程
Sep 19 Python
Python批处理更改文件名os.rename的方法
Oct 26 Python
python利用百度AI实现文字识别功能
Nov 27 Python
Python多线程threading模块用法实例分析
May 22 Python
Django为窗体加上防机器人的验证码功能过程解析
Aug 14 Python
Python numpy数组转置与轴变换
Nov 15 Python
python读取与处理netcdf数据方式
Feb 14 Python
Django 返回json数据的实现示例
Mar 05 Python
python中逻辑与或(and、or)和按位与或异或(&、|、^)区别
Aug 05 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
php读取文件内容的三种可行方法示例介绍
2014/02/08 PHP
PHP+Ajax实现无刷新分页实例详解(附demo源码下载)
2016/04/07 PHP
js基于qrcode.js生成二维码的方法【附demo插件源码下载】
2016/12/28 PHP
微信封装的调用微信签名包的类库
2017/06/08 PHP
PHP pthreads v3下的Volatile简介与使用方法示例
2020/02/21 PHP
JavaScript方法和技巧大全
2006/12/27 Javascript
使一个函数作为另外一个函数的参数来运行的javascript代码
2007/08/13 Javascript
JQuery 1.4 中的Ajax问题
2010/01/23 Javascript
javascript 判断字符串是否包含某字符串及indexOf使用示例
2013/10/18 Javascript
jQuery实现简单的日期输入格式化控件
2015/03/12 Javascript
Nodejs如何搭建Web服务器
2016/03/28 NodeJs
如何提高javascript加载速度
2016/12/26 Javascript
angular forEach方法遍历源码解读
2017/01/25 Javascript
微信小程序中hidden不生效原因的解决办法
2017/04/26 Javascript
js轮播图透明度切换(带上下页和底部圆点切换)
2017/04/27 Javascript
JavaScrip数组删除特定元素的几种方法总结
2017/09/06 Javascript
Mac中安装nvm的教程分享
2017/12/11 Javascript
vue.js或js实现中文A-Z排序的方法
2018/03/08 Javascript
Vue Router的懒加载路径的解决方法
2018/06/21 Javascript
详解vue使用vue-layer-mobile组件实现toast,loading效果
2018/08/31 Javascript
Jquery获取radio选中值实例总结
2019/01/17 jQuery
使用Vue父子组件通信实现todolist的功能示例代码
2019/04/11 Javascript
图解javascript作用域链
2019/05/27 Javascript
python实现支持目录FTP上传下载文件的方法
2015/06/03 Python
django项目简单调取百度翻译接口的方法
2019/08/06 Python
Python实现异步IO的示例
2020/11/05 Python
html5新特性与用法大全
2018/09/13 HTML / CSS
H5 canvas实现贪吃蛇小游戏
2017/07/28 HTML / CSS
英国在线潜水商店:Simply Scuba
2019/03/25 全球购物
为什么如下的代码int a=100,b=100;long int c=a * b;不能工作
2013/11/29 面试题
开放系统互连参考模型
2016/06/29 面试题
本科生职业生涯规划书范文
2014/01/21 职场文书
社会学专业学生职业规划书
2014/02/07 职场文书
大学生见习报告总结
2014/11/04 职场文书
红色经典观后感
2015/06/18 职场文书
Nginx开源可视化配置工具NginxConfig使用教程
2022/06/21 Servers