【问题标题】:Python: Multiprocessing Map takes longer to complete last few processesPython:多处理地图需要更长的时间才能完成最后几个过程
【发布时间】:2016-02-05 22:06:45
【问题描述】:

在 Python 中,我尝试运行 150-200 个进程。我将这 150 个东西放在一个数组中,并且我已将该数组拆分为多个数组,每个数组包含 10 个元素。

现在,我运行一个多处理映射,一次包含 10 个元素。完成所有 10 个后,我们将进入下一个 10,依此类推。

现在,问题是:第九和第十个进程几乎总是比其他进程慢。这有什么原因吗?我这样做不是最有效的方式吗?

** 我将无法共享此代码。那么您对为什么会发生这种情况有任何想法吗?

提前致谢。

【问题讨论】:

  • 你有 4 个或 8 个处理器内核吗?
  • 4 核 Core i7 处理器。但是,据我所知,它可以使用 4 核作为 8?真的吗?谢谢!
  • 没错,i7s 使用超线程来拥有 8 个虚拟内核,所以可能就是原因。
  • 嗯,是的,使用 8 个而不是 10 个并行进程。
  • 是否所有要处理的元素都应该在相同的时间内处理?或者也许某些元素需要更难的计算? (或从远程应答等中等待?)。除了设置进程数为8,有没有尝试过imap_unordered等其他多处理方式,看看有没有同样的问题?

标签: python memory multiprocessing python-multiprocessing


【解决方案1】:

这是由于Pool.map 在工作人员之间分配数据的方式。使用chunksize=1作为参数,即map(...,..., chunksize=1)

类似的问题解释如下: python multiprocessing map mishandling of last processes

【讨论】:

  • 请查看URL这将有助于提升您的内容质量
猜你喜欢
  • 2019-05-25
  • 2013-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-23
  • 1970-01-01
  • 1970-01-01
  • 2018-02-07
相关资源
最近更新 更多