Python中的多进程 - 确保至少有一定数量的子进程处于活动状态
我想确保在任何时候都有一定数量的子进程是活跃的;目前的创建方式如下:
pool = Pool(processes=WORKERS)
pool.map(worker.run, range(WORKERS)) # pass process a number as its ID
在某些情况下,工作进程可能会因为错误而返回
或者崩溃 - 我想在这种情况下重新创建一个新的工作进程。这有可能吗?
谢谢,
1 个回答
2
这里有一个简单(可能有点傻)的解决方案:定期检查你所有的工作者,移除那些已经完成工作的,然后把新的工作者添加到工作者列表中(基础代码来自 Doug Hellman):
import multiprocessing, random, time
def worker(num):
"""thread worker function"""
time.sleep(random.randint(1,10))
print 'Worker:', num
return
if __name__ == '__main__':
jobs = []
for i in range(5):
p = multiprocessing.Process(target=worker, args=(i,))
jobs.append(p)
p.start()
while True:
time.sleep(2)
for n, p in enumerate(jobs):
if not p.is_alive():
jobs.pop(n)
i += 1
p = multiprocessing.Process(target=worker, args=(i,))
jobs.append(p)
p.start()