首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从python进程池中获取进程

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

Stack Overflow用户
提问于 2013-05-06 09:07:43
回答 1查看 389关注 0票数 5

我想创建多个进程,每个进程比前一个进程晚运行5秒,即每个进程启动的时间间隔是5秒,这样:运行进程1等待5秒运行进程2等待5秒运行进程3等待5秒.....

像这样:

代码语言:javascript
复制
        for i in range(10):
            p = multiprocessing.Process(target=func)
            p.start()
            sleep(5)
        #after all child process exit
        do_something()

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

有了python池库,我可以

代码语言:javascript
复制
    pool = multiprocessing.Pool(processes=4)
    for i in xrange(500):
            pool.apply_async(func, i)
    pool.close()
    pool.join()
    do_something()

但在这种情况下,4个进程将同时运行,我无法决定进程之间的时间间隔,是否可以创建一个进程池,然后获取每个进程,例如

代码语言:javascript
复制
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()

有没有这样的库或源代码片段可以满足我的需求?谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-06 22:31:27

为了把建议放在一起,你可以这样做:

代码语言:javascript
复制
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()提供一个超时参数来处理阻塞的进程;在这种情况下,您必须不断迭代列表,删除已终止的进程,直到列表为空。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16390744

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档