Python多处理

Python多处理,python,python-3.x,spyder,python-multiprocessing,vdi,Python,Python 3.x,Spyder,Python Multiprocessing,Vdi,我试图使用下面给出的示例来理解Python的多处理模块,但迄今为止从未成功过。我在Spyder中运行代码,它总是挂在那里,控制台中没有输出。我在一篇文章中了解到,多处理模块在Spyder控制台中不起作用,所以我用它创建了一个exe并在cmd中执行,但我的VDI崩溃了,在多次尝试重新启动之前数小时无法连接。我可以得到建议,我应该做什么,使下面的代码运行 from multiprocessing import Pool def f(x): return x*x if __name__ =

我试图使用下面给出的示例来理解Python的多处理模块,但迄今为止从未成功过。我在Spyder中运行代码,它总是挂在那里,控制台中没有输出。我在一篇文章中了解到,多处理模块在Spyder控制台中不起作用,所以我用它创建了一个exe并在cmd中执行,但我的VDI崩溃了,在多次尝试重新启动之前数小时无法连接。我可以得到建议,我应该做什么,使下面的代码运行

from multiprocessing import Pool

def f(x):
    return x*x

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

我将您的代码复制粘贴到一个名为tmp.py的文件中,并使用以下命令在控制台中运行它:

python3 tmp.py
我得到了以下正确的输出:

[1, 4, 9]

在我看来,你的代码没有任何问题。您对池的使用在我看来似乎是正确的。

您必须找到您的系统中支持多少个CPU内核。如果不是为了满足VDI,您不需要将其设置为
.exe
以从终端(cmd)运行。只需使用
pythonyourscript.py
从文件夹启动它。对于制作
.exe
,您必须包含(此处为Spyder maintainer),此问题已修复了很长时间,因此我猜您使用的是非常旧的Spyder版本(两年或更长时间)。所以请更新并再试一次。它对我也有效,一旦我将它复制到一个文件并在控制台中进行了尝试,但有任何原因导致它不能像控制台中那样工作吗?而且,我创建了相同的exe,但没有再次工作。有什么原因吗?我真的不知道为什么,但问题是众所周知的!如果您看一下这个SO线程:它清楚地表明windows上的Spyder在多处理方面存在问题。至于编译问题,您如何将脚本编译为exe?