当前位置: 首页 > 面试题库 >

Python中的multiprocessing.dummy没有使用100%cpu

蒙才
2023-03-14
问题内容

我正在用Python做一个机器学习项目,所以我必须做并行预测功能,这是我在程序中使用的功能。

from multiprocessing.dummy import Pool
from multiprocessing import cpu_count


def multi_predict(X, predict, *args, **kwargs):
    pool = Pool(cpu_count())
    results = pool.map(predict, X)
    pool.close()
    pool.join()
    return results

问题是我所有的CPU仅加载20-40%(总和为100%)。我使用multiprocessing.dummy,因为我在酸洗功能中的多处理模块有一些问题。


问题答案:

使用时multiprocessing.dummy,您使用的是线程,而不是进程:

multiprocessing.dummy复制API的API,multiprocessing但仅不过是threading模块周围的包装器。

这意味着您受到全局解释器锁(GIL)的限制,并且实际上只有一个线程可以一次执行CPU绑定的操作。这将使您无法充分利用CPU。如果要在所有可用内核之间获得完全的并行性,则需要解决您遇到的酸洗问题multiprocessing.Pool

请注意,multiprocessing.dummy如果您需要并行化的工作是受IO限制的,或者利用释放GIL的C扩展名,则这可能仍然有用。但是,对于纯Python代码,您需要multiprocessing



 类似资料:
  • 问题内容: 我想在Python中使用PhantomJS。我用谷歌搜索了这个问题,但是找不到合适的解决方案。 我发现 可能是一个不错的选择。但是我无法通过一些争论。 使用可能是目前合适的解决方案。我想知道是否有更好的解决方案。 有没有办法在Python中使用PhantomJS? 问题答案: 在python中使用PhantomJS的最简单方法是通过Selenium。最简单的安装方法是 安装NodeJS

  • 我想在Python中使用PhantomJS。我谷歌了这个问题,但找不到合适的解决方案。 我发现可能是一个不错的选择。但我无法向它传递一些论据。 使用目前可能是一个合适的解决方案。我想知道是否有更好的解决办法。 有没有办法在Python中使用PhantomJS?

  • 我注意到Android Studio(运行时)在任何时候都使用超过100%的CPU,即使IDE运行时似乎没有后台进程(索引等)。我可能怀疑这是我的盒子特有的东西,但一些开发人员也遇到了这个问题。 CPU使用率通常在100秒或200秒左右(见下面的截图)。有人也遇到过这个吗?如果是这样,IDE中是否有任何策略或选项来纠正这种对系统资源的密集使用?

  • 我的代码是: 它似乎运行良好,但在它运行之前,我总是得到这个错误: UserWarning:PhantomJS的Selenium支持已被弃用,请使用Chrome或Firefox的无头版本。警告('对PhantomJS的Selenium支持已被弃用,请使用headless 为什么我会犯这个错误?我认为我的PhantomJS是无头的,因为它仍然可以工作,并且没有浏览器弹出。这个错误保存后可以忽略吗?

  • 我得到的错误是:在Python 3中没有名为“Tkinter”的模块。我正在尝试运行这段代码。

  • 问题内容: 当使用pywin的win32api时,我得到的光标位置值不正确。我的屏幕分辨率为1920x1080,但是当我使用GetCursorPos()时,左上角为(0,0),右下角为(1535,863)。我使用的代码如下: 我正在Windows 10上使用python 2.7进行尝试,但在Windows 8上的python 2.6中也遇到了此错误。是否有解决方案或解决此问题的方法? 问题答案: