Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用池的多处理_Python_Python Multiprocessing - Fatal编程技术网

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,

我不熟悉多处理(在任何语言中),我正在学习如何实现它,特别是在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, 16]
在我看来,函数
compute
首先执行
x=1
,然后执行
x=2
,然后执行
x=3
,最后执行
x=4
,然后终止并返回结果。或者上述代码是否同时在单独的内核中为x=1、2、3和4调用
compute
(即,四个单独的
compute
调用)


诚然,这个例子对于多处理来说是非常琐碎和过分的,但我将对
池的功能做任何澄清。感谢您的指点。

这将帮助您在要求在此处重复之前阅读文档?这回答了你的问题吗?正如您所怀疑的,代码同时在单独的核心中为每个值调用
compute
;它将工作进程的数量限制为传递给
Pool()
构造函数的参数,或者CPU内核的数量,因此如果列表中有更多的项,它将在工作进程可用时将它们传递给工作进程。(它也分块工作,而不是处理单个项目,以减少开销。)