Python守护进程实现过程详解


Posted in Python onFebruary 10, 2020

这篇文章主要介绍了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

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

守护进程可以通过调用isAlive(), 来监视其他线程是否是存活的。

如果死掉的话就重新建立一个工作线程,启动起来(这里要注意不能使用原来的线程让它start(),因为这个线程已经结束了,内存中的实例已经释放掉了,所以使用这个方法会报错)。

#coding=utf-8
import time
from threading import Thread
 
 
class ticker(Thread):
  def run(self):
    while True:
      print time.time()
      if (time.time() > 1470883000):
        break
        pass
      time.sleep(3)     
      pass
    pass
 
class moniter(Thread):
  def run(self):
    while True:
      global T
      if (T.isAlive()):
        print 't is alive'
      else :
        print 't is dead'
        T = ticker()
        T.start()
      print 'checking '
      time.sleep(5)
      pass
    pass
T = ticker()
T.start()
 
mo = moniter()
mo.start()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python利用pyHook实现监听用户鼠标与键盘事件
Aug 21 Python
Python实现的下载8000首儿歌的代码分享
Nov 21 Python
Python IDLE 错误:IDLE''s subprocess didn''t make connection 的解决方案
Feb 13 Python
Python爬虫实战:分析《战狼2》豆瓣影评
Mar 26 Python
pandas series序列转化为星期几的实例
Apr 11 Python
Python最小二乘法矩阵
Jan 02 Python
Python爬虫实现“盗取”微信好友信息的方法分析
Sep 16 Python
在Python中使用turtle绘制多个同心圆示例
Nov 23 Python
基于spring boot 日志(logback)报错的解决方式
Feb 20 Python
jupyter notebook实现显示行号
Apr 13 Python
python爬虫scrapy框架之增量式爬虫的示例代码
Feb 26 Python
还在手动盖楼抽奖?教你用Python实现自动评论盖楼抽奖(一)
Jun 07 Python
Python3 字典dictionary入门基础附实例
Feb 10 #Python
python列表返回重复数据的下标
Feb 10 #Python
Python中断多重循环的几种方式详解
Feb 10 #Python
django有外键关系的两张表如何相互查找
Feb 10 #Python
Django重设Admin密码过程解析
Feb 10 #Python
tensorflow实现训练变量checkpoint的保存与读取
Feb 10 #Python
Python单元测试模块doctest的具体使用
Feb 10 #Python
You might like
php面向对象全攻略 (八)重载新的方法
2009/09/30 PHP
解析php中curl_multi的应用
2013/07/17 PHP
PHP结合jQuery插件ajaxFileUpload实现异步上传文件实例
2020/08/17 PHP
PHP读取文本文件并逐行输出该行使用最多的字符与对应次数的方法
2016/11/25 PHP
DWZ+ThinkPHP开发时遇到的问题分析
2016/12/12 PHP
Laravel 5.4向IoC容器中添加自定义类的方法示例
2017/08/15 PHP
奇妙的js
2007/09/24 Javascript
input 高级限制级用法
2009/03/26 Javascript
50款非常棒的 jQuery 插件分享
2012/03/29 Javascript
seajs1.3.0源码解析之module依赖有序加载
2012/11/07 Javascript
node.js应用后台守护进程管理器Forever安装和使用实例
2014/06/01 Javascript
详解javascript实现自定义事件
2016/01/19 Javascript
angularjs封装bootstrap时间插件datetimepicker
2016/06/20 Javascript
jQuery实现字符串全部替换的方法【推荐】
2017/03/09 Javascript
javascript 初学教程及五子棋小程序的简单实现
2017/07/04 Javascript
bootstrap fileinput实现文件上传功能
2017/08/23 Javascript
JavaScript基础之流程控制语句的用法
2017/08/31 Javascript
详解在vue-cli中引用jQuery、bootstrap以及使用sass、less编写css
2017/11/08 jQuery
详解VUE2.X过滤器的使用方法
2018/01/11 Javascript
纯JS实现可用于页码更换的飞页特效示例
2018/05/21 Javascript
vue安装遇到的5个报错及解决方法
2019/06/12 Javascript
微信小程序表单验证插件WxValidate的二次封装功能(终极版)
2019/09/03 Javascript
Element Card 卡片的具体使用
2020/07/26 Javascript
python在回调函数中获取返回值的方法
2019/02/22 Python
最小二乘法及其python实现详解
2020/02/24 Python
matlab 计算灰度图像的一阶矩,二阶矩,三阶矩实例
2020/04/22 Python
canvas基础之图形验证码的示例
2018/01/02 HTML / CSS
浅谈HTML5 & CSS3的新交互特性
2016/07/19 HTML / CSS
h5页面唤起app如果没安装就跳转下载(iOS和Android)
2020/06/03 HTML / CSS
PacSun官网:加州生活方式服装、鞋子和配饰
2018/03/10 全球购物
公司爱心捐款倡议书
2014/05/14 职场文书
2015年实习班主任工作总结
2015/04/23 职场文书
消防宣传语大全
2015/07/13 职场文书
八年级英语教学反思
2016/02/15 职场文书
《乌鸦喝水》教学反思
2016/02/19 职场文书
餐厅营销的秘密:为什么老顾客会流水?
2019/08/08 职场文书