我有一些需要在多个其他系统上运行的代码,这些系统可能会挂起或出现不在我的控制范围内的问题。我想使用Python的多进程来生成子进程独立于主程序运行,然后当它们挂起或出现问题时终止它们,但我不确定最佳方法是什么。
当调用“终止”时,它确实会杀死子进程,但然后它变成一个“僵尸”进程,直到进程对象消失才得以释放。下面的示例代码(其中循环永远不会结束)可以将其终止并在再次调用时允许重新生成,但似乎不是一个好方法(例如,在__init __()中应该使用multiprocessing.Process())。
有人有建议吗?
class Process(object):
def __init__(self):
self.thing = Thing()
self.running_flag = multiprocessing.Value("i", 1)
def run(self):
self.process = multiprocessing.Process(target=self.thing.worker, args=(self.running_flag,))
self.process.start()
print self.process.pid
def pause_resume(self):
self.running_flag.value = not self.running_flag.value
def terminate(self):
self.process.terminate()
class Thing(object):
def __init__(self):
self.count = 1
def worker(self,running_flag):
while True:
if running_flag.value:
self.do_work()
def do_work(self):
print "working {0} ...".format(self.count)
self.count += 1
time.sleep(1)