我甚至无法使用在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