如何在多处理中启动100个worker?

问题描述 投票:0回答:1

我正在尝试使用 python 来调用我的函数,

my_function()
100 次。由于
my_function
需要一段时间才能运行,因此我想并行化此过程。

我尝试阅读 https://docs.python.org/3/library/multiprocessing.html 的文档,但找不到一个简单的示例来开始启动 100 名工作人员。顺序并不重要;我只需要该函数运行 100 次。

有什么建议/代码提示吗?

python parallel-processing multiprocessing python-multiprocessing pool
1个回答
4
投票

您链接到的页面上的第一个示例确实有效。所以我只需将其复制并粘贴到此处并更改两个值。

from multiprocessing import Pool

def f(x):
    return x*x

if __name__ == '__main__':
    with Pool(100) as p:
        print(p.map(f, range(100)))

编辑:您刚才说您正在使用 Google colab。我认为 google colab 为您提供了两个 cpu 核心,而不是更多。 (您可以通过运行

!cat /proc/cpuinfo
来检查)。使用 2 个 cpu 核心,您一次只能执行两个计算。

因此,如果您的函数主要不是等待外部 IO(例如来自网络),那么这是没有意义的:您有 50 个执行竞争一个核心。现代多处理的魔力在于,这意味着突然一个函数将被中断,其状态保存到 RAM,另一个函数可能会运行一段时间,被中断,等等。

这整个状态交换当然是开销。只要并行运行与您拥有的核心一样多的函数实例,您的速度就会更快。请阅读上面使用的有关

Pool
的文档以获取更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.