Windows和Spyder中的python多处理问题

问题描述 投票:0回答:1

我有一个关于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()

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

我也避免了如我所述的儿童过程打印:Simple Python Multiprocessing function doesn't output results而是使用return。

我的代码可以工作,如果我从一个unix终端运行它,但我主要使用Windows为我的python项目。在Windows中是否有针对此问题的解决方法?

python spyder python-multiprocessing
1个回答
0
投票

经过一些研究后,我了解交互式解释器和多路进行存在问题。

在:https://docs.python.org/2.7/library/multiprocessing.html#introduction中声明:注意:......一些示例,例如Pool示例在交互式解释器中不起作用。

一个较老的帖子解决了类似的问题,一个spyder维护者回答说,确实多处理在Spyder的IPython控制台上的Windows上运行不正常。 (No multiprocessing print outputs (Spyder)

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

© www.soinside.com 2019 - 2024. All rights reserved.