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

mis*_*yes 5 python multiprocessing

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

但我想在所有进程退出后调用do_something()我不知道如何在这里进行同步

有了python池库,我可以拥有

    pool = multiprocessing.Pool(processes=4)
    for i in xrange(500):
            pool.apply_async(func, i)
    pool.close()
    pool.join()
    do_something()
Run Code Online (Sandbox Code Playgroud)

但是这样,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()
Run Code Online (Sandbox Code Playgroud)

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

Nic*_*tti 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()
Run Code Online (Sandbox Code Playgroud)

您可以给出一个超时参数join()来处理卡住的进程;在这种情况下,您必须不断迭代列表,删除终止的进程,直到列表为空。