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

How to launch 100 workers in multiprocessing?

我正在尝试使用 python 调用我的函数 my_function() 100 次。由于 my_function 需要一段时间才能达到 运行,我想并行处理此过程。

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

有什么suggestions/code提示吗?

您 link 可以使用的页面上的第一个示例。所以我只是将其复制并粘贴到此处并更改两个值。

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 的文档以获取更多信息。