首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Python apply_async中丢失队列任务

在Python apply_async中丢失队列任务
EN

Stack Overflow用户
提问于 2013-11-03 12:47:05
回答 1查看 330关注 0票数 1

我正在尝试编写一个包装器,它通过运行另一个具有不同输入文件的程序进行迭代。程序(我无法控制它,但需要使用它)需要从与输入文件相同的目录中运行。到目前为止,我的方法是使用OS-module更改/创建目录结构,使用apply-async来运行程序,给定子目录,apply-async中的每个子进程更改目录,创建文件,并且前8个进程成功运行(我有8个虚拟内核)

然而,我正在排队多达100个这样的进程(它们运行一个模拟,这需要几分钟的时间,我正在寻找优化)。我在运行的外部可执行文件上使用"call“。我以为一切都很顺利,但在第8次模拟运行后,一切都停止了,我检查0个进程正在运行。这就好像队列忘记了其他进程一样。

我能做些什么来解决这个问题呢?我知道我的RAM只增加了大约300MB的8 8GB。

提前谢谢你。

EN

回答 1

Stack Overflow用户

发布于 2013-11-03 13:25:22

也许总比什么都没有好。这展示了使用apply_async()的正确方法,并表明-是的-创建比进程多得多的任务是没有问题的。我想告诉你这与你正在做的事情有什么不同,但我不知道你在做什么;-)

代码语言:javascript
复制
import multiprocessing as mp

def work(i):
    from time import sleep
    sleep(2.0 if i & 1 else 1.0)
    return i*i

if __name__ == "__main__":
    pool = mp.Pool(4)
    results = [pool.apply_async(work, (i,)) for i in range(100)]
    results = [r.get() for r in results]
    print len(results), results
    pool.close()
    pool.join()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19749910

复制
相关文章

相似问题

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