gpt4 book ai didi

Python多处理速度

转载 作者:太空狗 更新时间:2023-10-30 00:46:09 25 4
gpt4 key购买 nike

我写了这段代码来在我的电脑上测试 Python 的多处理:

from multiprocessing import Pool

var = range(5000000)
def test_func(i):
return i+1

if __name__ == '__main__':
p = Pool()
var = p.map(test_func, var)

我使用 Unix 的时间命令对其计时,结果是:

real 0m2.914s
user 0m4.705s
sys 0m1.406s

然后,使用相同的 vartest_func() 我计时:

var = map(test_func, var)

结果是

real 0m1.785s
user 0m1.548s
sys 0m0.214s

多处理代码不应该比普通的旧 map 快得多吗?

最佳答案

为什么它应该。

在 map 函数中,您只是按顺序调用函数。

多处理池创建了一组工作线程,您的任务将映射到这些工作线程。它正在协调多个工作进程来运行这些功能。

尝试在您的函数内部做一些重要的工作,然后对它们进行计时,看看多处理是否可以帮助您更快地计算。

您必须了解使用多处理会产生开销。只有当计算工作量明显大于这些开销时,您才会看到它的好处。

请参阅 Hellmann 精彩介绍中的最后一个示例:http://www.doughellmann.com/PyMOTW/multiprocessing/communication.html

pool_size = multiprocessing.cpu_count() * 2
pool = multiprocessing.Pool(processes=pool_size,
initializer=start_process,
maxtasksperchild=2,
)
pool_outputs = pool.map(do_calculation, inputs)

您可以根据拥有的内核创建池。

关于Python多处理速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11229739/

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