【问题标题】:why pool.map in python doesn't work为什么 python 中的 pool.map 不起作用
【发布时间】:2016-08-12 12:49:36
【问题描述】:
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,有什么问题吗?

这是我在屏幕上看到的:

我是财务数据分析的新手;我正在尝试找到一种方法来解决并行计算的大数据问题。

【问题讨论】:

  • 打破它并重试。正如所写(以及我刚刚测试过的),这段代码应该可以完美运行。这可能不是您的代码,而是您正在使用的系统。你在哪个平台上?

标签: windows multiprocessing python-3.5


【解决方案1】:

它不起作用,因为您在 shell 中键入命令;尝试将代码保存在文件中并直接运行。

不要忘记正确复制代码,您错过了一个非常重要的if 语句(请参阅documentation)。

将此保存到文件中,例如桌面上的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 中输入命令时不起作用吗?
  • 我找到了一种在 Jupyter 笔记本中使用 pool.map 的方法,并在此处接受的答案中使用 shell 中的命令:stackoverflow.com/questions/47313732/…。它涉及将函数保存在单独的 .py 文件中,然后将其导入。
猜你喜欢
  • 1970-01-01
  • 2011-10-13
  • 2021-09-15
  • 2021-07-01
  • 2023-03-24
  • 1970-01-01
  • 1970-01-01
  • 2021-09-05
  • 1970-01-01
相关资源
最近更新 更多