我想创建多个进程,每个进程比前一个进程晚运行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()有没有这样的库或源代码片段可以满足我的需求?谢谢
发布于 2013-05-06 22:31:27
为了把建议放在一起,你可以这样做:
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()提供一个超时参数来处理阻塞的进程;在这种情况下,您必须不断迭代列表,删除已终止的进程,直到列表为空。
https://stackoverflow.com/questions/16390744
复制相似问题