python多处理pool.map挂起

我甚至无法使用在python 2.7中运行的多处理程序包(使用spyder作为Windows上的UI)进行并行处理的最简单的示例,我需要帮助解决问题.我已经运行conda更新所以所有的包应该是最新的和兼容的.

即使是多处理包文档中的第一个示例(如下所示)也无法工作,它会生成4个新进程,但控制台只是挂起.我已经尝试了过去3天内可以找到的所有内容,但没有挂起的代码都没有将超过25%的计算能力分配给此任务(我有一台4核计算机).

我已经放弃了运行我设计的程序,并且需要并行处理,我只是想获得概念证明,以便我可以从那里构建.有人可以解释并指出我正确的方向吗?谢谢

来自https://docs.python.org/2/library/multiprocessing.html的示例1

#

from multiprocessing import Pool

def f(x):
    return x*x

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

http://chriskiehl.com/article/parallelism-in-one-line/开始的示例2(从原始版本修改)

from multiprocessing import Pool

def fn(i):
    return [i,i*i,i*i*i]

test = range(10)

if __name__ == '__main__':    
    pool = Pool() 
    results = map(fn,test)
    pool.close() 
    pool.join() 

我很抱歉,如果确实有一个答案,因为我似乎应该能够管理这样一个适度的任务,但我不是一个程序员,而且鉴于我的知识水平非常有限,我发现的资源不太有用.请告诉我需要哪些进一步的信息.

谢谢.

解决方法:

在我的虚拟机上安装spyder后,它似乎是一个spyder特定的bug.示例1在IDLE中工作,通过命令行执行,从spyder中执行(先保存然后执行),但不是在spyder中逐行执行时.

我建议只需在spyder中创建一个新文件,添加代码行,保存它,然后运行它.

相关报告见:

> https://groups.google.com/forum/#!topic/spyderlib/LP5d8QZTXd0
> QtConse in Spyder cannot use multiprocessing.Manager
> Multiprocessing working in Python but not in iPython
> https://github.com/spyder-ide/spyder/issues/1900

上一篇:【字符串】KMP算法


下一篇:java – Windows Server 2008 R2下JVM停止在2GB