我想创建很多进程, 每个进程比前一个进程运行5秒, 即,每个进程开始之间的时间间隔是5秒, 以便: 运行过程1 等5秒 运行过程2 等5秒 运行过程3 等5秒 .....
像:
for i in range(10):
p = multiprocessing.Process(target=func)
p.start()
sleep(5)
#after all child process exit
do_something()
但我希望在所有进程退出后调用do_something() 我不知道如何在这里进行同步
使用python池库,我可以
pool = multiprocessing.Pool(processes=4)
for i in xrange(500):
pool.apply_async(func, i)
pool.close()
pool.join()
do_something()
但以这种方式,4个进程将同时运行, 我无法确定进程之间的时间间隔, 是否可以创建一个进程池,然后获取每个进程,如
pool = multiprocessing.Pool(processes=4)
for i in xrange(500):
process = pool.fetch_one()
process(func, i)
time.sleep(5)
pool.close()
pool.join()
do_something()
是否有满足我需求的库或源代码片段? 感谢
答案 0 :(得分:0)
只是将建议放在一起,你可以做类似的事情:
plist = []
for i in range(10):
p = multiprocessing.Process(target=func)
p.start()
plist.append(p)
sleep(5)
for p in plist:
p.join()
do_something()
您可以为join()
提供超时参数,以便处理卡住的进程;在这种情况下,您必须继续遍历列表,删除已终止的进程,直到列表为空。