【发布时间】:2021-06-05 19:42:35
【问题描述】:
我有一个函数,我必须运行大约 1000 次。每次运行大约需要 8-15 秒,有时甚至更长。为了节省时间,我想并行化它。但并非所有 2000 次都同时运行,而是例如每时每刻运行 50 个函数。因此,有必要使用某种总体管理器来跟踪并行函数运行的数量,并确保每个时刻都有 50 个处于活动状态,并且一旦函数运行完成,它就应该启动一个新功能运行再次达到 50。我曾经在 perl 中使用 Forks::Super 模块做同样的事情。是否有与 python 中可用的等效项?
【问题讨论】:
-
工具和库推荐请求在这里绝对是题外话(请参阅stackoverflow.com/help/on-topic 列表中的#4),但有趣的是你使用了一个标准库模块的标签,它具有 正是这个功能。注意多处理池。
-
你不能利用标准库池抽象吗?
-
你们都指的是包多处理,不是吗?我事先做了一些阅读,偶然发现了这个包,但我的印象是它并没有提供我想要的东西。老实说,我不是程序员,我只是偶尔写脚本,而且这些东西真的很复杂,至少对我来说是这样。
-
您能否在问题中添加更多详细信息
-
@zweiund40,如果你不相信
multiprocessing.Pool能做你想做的事,写一个minimal reproducible example 来证明它实际做的和你需要做的之间的区别。跨度>
标签: python python-multiprocessing python-multithreading