【问题标题】:multiprocessing python 3.6 on windows 10 not working [duplicate]Windows 10上的多处理python 3.6不起作用[重复]
【发布时间】:2018-02-07 09:51:01
【问题描述】:

我在 Linux 上使用 python 3.6,我使用的是 python 的多处理库,它一直在工作,直到我切换到 Windows 10。首先,我认为这是因为多处理库在 Linux 和 Windows 上的工作方式不同,所以我确保我的所有变量都是可腌制的,但没有结果。

然后,我想看看多处理池是否正常工作, 我试过这段代码:(多处理文档中的基本示例)

from multiprocessing import Pool

def f(x):
    return x*x

if __name__ == '__main__':
    p = Pool(5)
    print(p.map(f, [1, 2, 3]))

它不起作用,当我在任务管理器中检查处理器时,只使用了 1%。

我也尝试了p.map_async,它有效,但是当我尝试获取结果时 (p.map_async().get()) 它不起作用 (RuntimeError)

【问题讨论】:

  • RuntimeError 是否为您提供更多信息?您显示的代码会发生什么情况(它会冻结还是引发异常)?
  • 您找到解决方案了吗?请分享。
  • @Jean-François Fabre : 解决方案的另一个位置在哪里?
  • 啊,看问题的顶部。这是一个已知的 UI 烦恼,人们看到“重复”,但看不到顶部的链接

标签: python python-3.x python-multiprocessing


【解决方案1】:
from multiprocessing import Pool

def f(x):
    return x*x

if __name__ == '__main__':
    p = Pool(5)
    results = p.imap(f,range(300))
    for item in results:
        print(item)
    p.close()

这将按顺序打印返回的项目。如果你 print(p.imap(f,range(300)) 它返回数据的内存位置。如果你说 p = Pool() 它将启动你的 CPU 可以处理的最大进程数。

【讨论】:

  • 不适用于 Windows 10
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-17
  • 1970-01-01
  • 1970-01-01
  • 2017-08-17
相关资源
最近更新 更多