Python守护进程实现过程详解

 更新时间:2020年02月10日 14:11:21   作者:xushukui  
这篇文章主要介绍了Python守护进程实现过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

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

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

相关文章

  • pandas DataFrame 警告(SettingWithCopyWarning)的解决

    pandas DataFrame 警告(SettingWithCopyWarning)的解决

    这篇文章主要介绍了pandas DataFrame 警告(SettingWithCopyWarning)的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • 通俗易懂详解Python基础五种下划线作用

    通俗易懂详解Python基础五种下划线作用

    本来而言,这个问题网上很多资料,但是网上资料都是复制来复制去,很多话大家其实都不是很明白的,或者拿着官方文档翻译过来的,让人看的非常迷糊。今天用通俗好懂表述解释下这几种情况
    2021-10-10
  • 使用python批量生成insert语句的方法

    使用python批量生成insert语句的方法

    很多时候需要造数据,大量的插入数据,本文介绍了使用python批量生成insert语句的方法,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • 科学计算NumPy之Ndarray运算函数操作示例汇总

    科学计算NumPy之Ndarray运算函数操作示例汇总

    这篇文章主要为大家介绍了科学计算NumPy之Ndarray运算函数操作示例汇总,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • python基础 range的用法解析

    python基础 range的用法解析

    这篇文章主要介绍了python基础 range的用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • python-opencv中的cv2.inRange函数用法说明

    python-opencv中的cv2.inRange函数用法说明

    这篇文章主要介绍了python-opencv中的cv2.inRange函数用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • python爬虫之requests库的使用详解

    python爬虫之requests库的使用详解

    这篇文章主要为大家介绍了python爬虫之requests库的使用,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-11-11
  • Python 数据类型中的字符串和数字

    Python 数据类型中的字符串和数字

    这篇文章主要介绍了Python 数据类型中的字符串和数字,Python3中有六个标准的数据类型,Number、String、List、Tuple、Set、Dictionary,加先来我们就来看看这几种数据类型的具体相关介绍,需要的小伙伴可以参考一下
    2022-02-02
  • Python+Turtle绘制可爱的可达鸭

    Python+Turtle绘制可爱的可达鸭

    一年一度的六一儿童节又来了,祝大朋友小朋友节日快乐!本文主要介绍如何运用Python中的turtle库控制函数绘制可达鸭,希望你会喜欢
    2022-05-05
  • flask框架实现修改密码和免密登录功能

    flask框架实现修改密码和免密登录功能

    flask是python web开发的常用框架之一。本文将讲述flask如何实现修改密码和免密登录功能
    2021-05-05

最新评论