使Python可以利用所有内核以适应scikit-learn模型。

9
我正在使用Windows 8 64位系统,运行带有ipython的python 2.7,并且我的系统有4个核心。当我拟合一个scikit-learn模型时,CPU使用率为50%,其中25%来自python,另外25%来自Chrome。
为什么Chrome使用的CPU资源与Python一样多?
是否有多线程版本的scikit-learn模型拟合函数,以便利用多个核心就像设置一个变量那样容易?例如:
grid_search = GridSearchCV(pipeline, parameters, n_jobs=-1)
1个回答

10
非常少数的sklearn模型可以自行并行运行。在non __main__交互式python会话(例如在脚本中)中使用 n_jobs = -1 n_jobs = 4 GridSearchCV [1] 应该能够在Windows下进行多进程处理(只要底层的单个 fit 调用持续超过1秒,例如)。
Chrome相关的问题可能是无关的:如果您不希望Chrome使用任何CPU,请关闭Chrome。您可能有一个在后台执行JavaScript或有漏洞的Flash应用程序的标签。
[1] http://docs.python.org/2/library/multiprocessing.html#windows

实际上,n_jobs 在每次 fit 调用时启动单独的 python 实例。这会导致巨大的开销,因此只适用于 fit 时间超过1秒的情况。 - polkovnikov.ph
1
它应该在池中启动“n_jobs” Python进程,并将fit调用分派给这些进程。实际上,这仍然具有显着的开销,只有在单个fit调用需要超过1秒时才有用。 - ogrisel
我在Windows任务管理器中看到的肯定不是一堆python进程。 - polkovnikov.ph

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接