Python scikit学习n_jobs

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

这不是一个真正的问题,但我想了解:

  • 在Win7 4核8 GB系统上运行来自Anaconda distrib的sklearn
  • 在200.000个样本* 200值表上拟合KMeans模型。
  • 运行n-jobs = -1 :(在我的脚本中添加if __name__ == '__main__':行之后)我看到脚本启动了4个进程,每个进程有10个线程。每个进程使用大约25%的CPU(总计:100%)。似乎按预期工作
  • 使用n-jobs = 1运行:使用20个线程保持单个进程(并不意外),并且还使用100%的CPU。

我的问题:如果库使用所有核心,那么使用n-jobs(和joblib)有什么意义呢?我错过了什么吗?它是特定于Windows的行为吗?

python parallel-processing scikit-learn joblib
1个回答
2
投票
  • 如果库使用所有核心,那么使用n-jobs(和joblib)有什么意义呢?

它没有,如果你指定n_jobs为-1,它将使用所有核心,如果将其设置为1或2,它将仅使用一个或两个核心(测试完成scikit-learn 0.20.3在linux下)

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