繁体   English   中英

如何从python进程池中获取进程

[英]how to fetch process from python process pool

我想创建许多进程,每个进程比前一个进程运行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()

是否有满足我需求的库或源代码片段? 谢谢

只是将建议放在一起,你可以做类似的事情:

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()提供超时参数以处理卡住的进程; 在这种情况下,您必须继续遍历列表,删除已终止的进程,直到列表为空。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM