zoukankan      html  css  js  c++  java
  • python之守护线程

    昨天遇到一个问题 在一个python程序里面开了三个线程轮询处理三件事情,刚开始一切正常,但是下午的时候发现其中一个线程死掉了,只剩下另外两个线程在运行了,这时候也不想中断主进程,又需要系统自动把死掉的一个线程启动起来就想起了要做一个守护线程来监控三个工作线程是不是正常在工作。

    查了一下手册python线程Thread类提供了以下方法:

    • run(): 用以表示线程活动的方法。
    • start():启动线程活动。
    • join([time]): 等待至线程中止。这阻塞调用线程直至线程的join() 方法被调用中止-正常退出或者抛出未处理的异常-或者是可选的超时发生。
    • isAlive(): 返回线程是否活动的。
    • getName(): 返回线程名。
    • setName(): 设置线程名。

    这样就可以在守护线程里面使用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()
    

      

  • 相关阅读:
    eclipse如何安装反编译插件
    (原创)Android 沉浸式状态栏实现(来自FlymeAPI)
    android:scaleType属性(转)
    Eclipse快捷键(转)
    Debug调试
    (Android)Activity生命周期详解(原创)
    Android Handler机制简介
    Android学习路线(来自mars老师)
    Android AsyncTask异步任务
    Android Service(二)
  • 原文地址:https://www.cnblogs.com/lijurui/p/5760396.html
Copyright © 2011-2022 走看看