为什么Python中的pool.map不起作用

3
import multiprocessing as mul

def f(x):
    return x**2

pool = mul.Pool(5)
rel  = pool.map(f,[1,2,3,4,5,6,7,8,9,10])

print(rel)

当我运行上面的程序时,应用程序陷入了循环而无法停止。我在Windows上使用Python 3.5,这里有什么问题吗?
这是我在屏幕上看到的: 我是财务数据分析的新手,正在尝试通过并行计算找到解决大数据问题的方法。

打破它,然后再试一次。按照代码编写(并且我刚刚测试过),这段代码应该完美运行。问题可能不在于你的代码,而是你所使用的系统。你在哪个平台上? - Akshat Mahajan
1个回答

6

因为你是在 shell 中输入命令,所以它没有生效;试着把代码保存到文件中并直接运行。

别忘了正确复制代码,你遗漏了一个非常重要的 if 语句(参见文档)。

将其保存到文件中,例如将其保存为 example.py 放在桌面上:

import multiprocessing as mul

def f(x):
    return x**2

if __name__ == '__main__':
    pool = mul.Pool(5)
    rel  = pool.map(f,[1,2,3,4,5,6,7,8,9,10])

    print(rel)

接下来,打开命令提示符并输入:

python %USERPROFILE%\Desktop\example.py

这对我有效。有任何想法为什么它在Jupyter笔记本或在shell中输入命令时不起作用? - gregorio099
我找到一种在Jupyter笔记本中使用pool.map的方法,可以通过在shell中使用命令看这里 https://dev59.com/3lYN5IYBdhLWcg3whIbz。它涉及将函数保存在单独的.py文件中,然后导入它。 - gregorio099

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接