我正在尝试使用 python 调用我的函数my_function()
100 次。由于my_function
需要一段时间才能运行,我想并行化这个过程。
我尝试阅读https://docs.python.org/3/library/multiprocessing.html的文档,但找不到一个简单的示例来开始启动 100 名工作人员。顺序无关紧要;我只需要该功能运行 100 次。
任何建议/代码提示?
我正在尝试使用 python 调用我的函数my_function()
100 次。由于my_function
需要一段时间才能运行,我想并行化这个过程。
我尝试阅读https://docs.python.org/3/library/multiprocessing.html的文档,但找不到一个简单的示例来开始启动 100 名工作人员。顺序无关紧要;我只需要该功能运行 100 次。
任何建议/代码提示?
您链接到的页面上的第一个示例有效。所以我只是将它复制并粘贴到这里并更改两个值。
from multiprocessing import Pool
def f(x):
return x*x
if __name__ == '__main__':
with Pool(100) as p:
print(p.map(f, range(100)))
编辑:你刚才说你正在使用谷歌 colab。我认为 google colab 为您提供了两个cpu 内核,而不是更多。(您可以通过运行检查!cat /proc/cpuinfo
)。使用 2 个 cpu 内核,您一次只能执行两个计算。
因此,如果您的函数主要不是等待外部 IO(例如来自网络),那么这是没有意义的:您有 50 次执行竞争一个内核。现代多处理的神奇之处在于,这意味着突然间,一个函数会被中断,它的状态会保存到 RAM 中,然后另一个函数可能会运行一段时间,然后被中断,等等。
这整个状态交换当然是开销。并行运行与拥有内核一样多的实例会更快。阅读Pool
上面使用的文档以获取更多信息。