gpt4 book ai didi

Python 多处理 : why are large chunksizes slower?

转载 作者:太空狗 更新时间:2023-10-29 21:33:37 24 4
gpt4 key购买 nike

我一直在使用 Python 的多处理模块分析一些代码('job' 函数只是数字的平方)。

data = range(100000000)
n=4
time1 = time.time()
processes = multiprocessing.Pool(processes=n)
results_list = processes.map(func=job, iterable=data, chunksize=10000)
processes.close()
time2 = time.time()
print(time2-time1)
print(results_list[0:10])

我发现奇怪的一件事是最佳 block 大小似乎约为 10k 个元素 - 这在我的计算机上花费了 16 秒。如果我将 block 大小增加到 100k 或 200k,那么它会减慢到 20 秒。

这种差异是否是由于较长列表的酸洗所需时间较长? 100 个元素的 block 大小需要 62 秒,我假设这是由于在不同进程之间来回传递 block 所需的额外时间。

最佳答案

关于最佳 block 大小:

  1. 拥有大量的小块可以让 4 个不同的工作人员更有效地分配负载,因此更小的 block 是可取的。
  2. 另一方面,每次必须处理新 block 时,与进程相关的上下文更改都会增加开销,因此需要较少的上下文更改量和较少的 block 。

由于这两个规则需要不同的方法,中间的一点就是要走的路,类似于供需图表。

关于Python 多处理 : why are large chunksizes slower?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40799172/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com