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