Python 使用池的多处理
我不熟悉多处理(在任何语言中),我正在学习如何实现它,特别是在Python中。给出的典型示例如下:Python 使用池的多处理,python,python-multiprocessing,Python,Python Multiprocessing,我不熟悉多处理(在任何语言中),我正在学习如何实现它,特别是在Python中。给出的典型示例如下: import multiprocessing as mp def compute(x): return x * x if __name__ == '__main__': with mp.Pool() as p: res = p.map(compute, [1, 2, 3, 4]) print(res) # prints [1, 4, 9,
import multiprocessing as mp
def compute(x):
return x * x
if __name__ == '__main__':
with mp.Pool() as p:
res = p.map(compute, [1, 2, 3, 4])
print(res) # prints [1, 4, 9, 16]
在我看来,函数compute
首先执行x=1
,然后执行x=2
,然后执行x=3
,最后执行x=4
,然后终止并返回结果。或者上述代码是否同时在单独的内核中为x=1、2、3和4调用compute
(即,四个单独的compute
调用)
诚然,这个例子对于多处理来说是非常琐碎和过分的,但我将对
池的功能做任何澄清。感谢您的指点。这将帮助您在要求在此处重复之前阅读文档?这回答了你的问题吗?正如您所怀疑的,代码同时在单独的核心中为每个值调用compute
;它将工作进程的数量限制为传递给Pool()
构造函数的参数,或者CPU内核的数量,因此如果列表中有更多的项,它将在工作进程可用时将它们传递给工作进程。(它也分块工作,而不是处理单个项目,以减少开销。)