Parallel processing 具有多处理功能的简单并行计算&x27;行不通

Parallel processing 具有多处理功能的简单并行计算&x27;行不通,parallel-processing,jupyter-notebook,multiprocessing,python-3.6,Parallel Processing,Jupyter Notebook,Multiprocessing,Python 3.6,我有一个简单但非常耗时的函数,我想将其并行化以加快速度。这是Jupyter笔记本上的Python 3.6。我是这样做的: from multiprocessing import Pool def func(x): return x**2 y = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] with Pool(5) as pool: results = pool.imap_unordered(func, y) for r in results: prin

我有一个简单但非常耗时的函数,我想将其并行化以加快速度。这是Jupyter笔记本上的Python 3.6。我是这样做的:

from multiprocessing import Pool
def func(x):
    return x**2
y = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
with Pool(5) as pool:
    results = pool.imap_unordered(func, y)
for r in results:
    print(r)
最后一句话永远不会结束


这里出了什么问题?

您遇到了上下文范围的问题。尝试在结果中移动r的
循环
块:

将池(5)作为池:
结果=池.imap_无序(func,y)
对于结果中的r:
印刷品(r)
这个很好用

或者,您可以只使用
Pool.map

来自多处理导入池的

def func(x):
返回x**2
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
y=[1,2,3,4,5,6,7,8,9,10]
将池(5)作为池:
结果=pool.map(func,y)
对于结果中的r:
印刷品(r)
哪张照片

1
4
9
16
25
36
49
64
81
100