Windows和Spyder中的Python多处理问题



我为我的大学准备了一个关于python多处理的项目。对于我的python项目,我在Windows中使用spyder。 因此,我试图在 spyder 中运行一个非常微不足道的多处理代码,但每次我运行它时,spyder 控制台都会冻结并且永远不会完成。这是我的代码:

from multiprocessing import Pool, freeze_support
import multiprocessing
def f(i):
return i+1
def main():
pool = multiprocessing.Pool(4)
result = pool.map(f, range(4))
pool.close()
pool.join()
print result
if __name__ == '__main__':
freeze_support() #you need this in windows
main()

我注意到这是多过程和窗口中缺少分叉的常见问题,因此我考虑了第 16.6.3.2 段。窗户在 https://docs.python.org/2/library/multiprocessing.html#windows。

我还避免从我的子进程打印,如下所述:Simple Python 多处理函数不输出结果,而是使用 return。

如果我从 unix 终端运行它,我的代码可以工作,但我主要将 Windows 用于我的 python 项目。 窗口中是否有解决此问题的方法?

经过一些研究,我知道交互式口译员和多孔存在问题。

在: https://docs.python.org/2.7/library/multiprocessing.html#introduction 指出:注意:...某些示例(如池示例(在交互式解释器中不起作用。

一篇较早的帖子解决了类似的问题,一位spyder维护者回答说,实际上多处理在Spyder的IPython控制台中的Windows上效果不佳。(无多处理打印输出(Spyder((

到目前为止,我发现的唯一解决方法是使用Windows cmd来运行代码

最新更新