Python multiprocessing.Pool 工作人员保持空闲状态

Posted

技术标签:

【中文标题】Python multiprocessing.Pool 工作人员保持空闲状态【英文标题】:Python multiprocessing.Pool workers remain idle 【发布时间】:2021-08-17 23:58:17 【问题描述】:

我是 Python 的初学者。我正在尝试使用 multiprocessing.Pool 运行一个简单的函数,但是当我运行该程序时,它没有得到处理。我可以看到产生了不同的进程,但它们remain idle。例如,下面的代码确实生成了两个工作进程,但没有输出,没有别的:

import multiprocessing

def f(x):
    print("Process "+str(x))
    return True

if __name__ == '__main__':
    pool = multiprocessing.Pool(processes=2)            
    result = pool.map(f, range(1000)) 

我正在使用 Microsoft Visual Studio 2019 运行 Python 3.9。操作系统是 Windows 10。我在这台计算机上使用 Python 3.7 时遇到了同样的问题。我在另一台计算机(也是 Windows 10、VS2019)上尝试了相同的代码,它工作正常。不同的是,这个有i9 Processor,而另一个有i7。

我在网上搜索过,但我没有遇到任何类似的问题或任何解决我的问题的方法。有谁知道为什么会发生这种情况和/或可能的修复?处理器的类型可能与它有关吗?谢谢!

【问题讨论】:

当且仅当您的问题与 Visual Studio 直接相关时,请使用标签 visual-studio 【参考方案1】:

这只是一个猜测:

我知道这不会在 Jupyter Notebook 或交互式解释器下运行。请参阅multiprocessing docs,尤其是以下部分:

针对这些环境的解决方案是将您的工作函数 f 放在一个单独的模块中,例如 worker.py,然后导入工作函数:

import multiprocessing
from worker import f

if __name__ == '__main__':
    pool = multiprocessing.Pool(processes=2)
    result = pool.map(f, range(1000))          

试一试,让我们知道其他也有 Visual Studio 的人是否可以这样做。谢谢。

【讨论】:

感谢@Booboo 的回答!我尝试了您的解决方案,但没有奏效。相反,我采取了更激进的方法,决定重新安装 python 以及所有其他包。令人惊讶的是,它奏效了!因此,令人尴尬的是,该问题很可能与我在第一次安装时忽略的一些缺失依赖项有关(尽管事后我无法准确指出 wat 缺失)。结案!很抱歉浪费您的时间:( 那你为什么要接受我的回答?你应该不接受它。

以上是关于Python multiprocessing.Pool 工作人员保持空闲状态的主要内容,如果未能解决你的问题,请参考以下文章

Python代写,Python作业代写,代写Python,代做Python

Python开发

Python,python,python

Python 介绍

Python学习之认识python

python初识