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()

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

相关文章

  • keras分类之二分类实例(Cat and dog)

    keras分类之二分类实例(Cat and dog)

    这篇文章主要介绍了keras分类之二分类实例(Cat and dog),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • python实现识别手写数字 python图像识别算法

    python实现识别手写数字 python图像识别算法

    这篇文章主要为大家详细介绍了python实现识别手写数字,python图像识别算法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • django允许外部访问的实例讲解

    django允许外部访问的实例讲解

    今天小编就为大家分享一篇django允许外部访问的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • django 扩展user用户字段inlines方式

    django 扩展user用户字段inlines方式

    这篇文章主要介绍了django 扩展user用户字段inlines方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • Python多进程共享numpy 数组的方法

    Python多进程共享numpy 数组的方法

    这篇文章主要介绍了Python多进程共享numpy 数组的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-07-07
  • python3 sqlite3限制条件查询的操作

    python3 sqlite3限制条件查询的操作

    这篇文章主要介绍了python3 sqlite3限制条件查询的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • 基于Python脚本实现邮件报警功能

    基于Python脚本实现邮件报警功能

    这篇文章主要介绍了基于Python脚本实现邮件报警功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • Python调用高德API实现批量地址转经纬度并写入表格的功能

    Python调用高德API实现批量地址转经纬度并写入表格的功能

    这篇文章主要介绍了Python调用高德API实现批量地址转经纬度并写入表格的功能,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • 深入理解Python异常处理的哲学

    深入理解Python异常处理的哲学

    这篇文章主要给大家介绍了关于Python异常处理的哲学,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-02-02
  • pytorch实现保证每次运行使用的随机数都相同

    pytorch实现保证每次运行使用的随机数都相同

    今天小编就为大家分享一篇pytorch实现保证每次运行使用的随机数都相同,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02

最新评论