Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
pythonscikit学习n_作业_Python_Parallel Processing_Scikit Learn_Joblib - Fatal编程技术网

pythonscikit学习n_作业

pythonscikit学习n_作业,python,parallel-processing,scikit-learn,joblib,Python,Parallel Processing,Scikit Learn,Joblib,这不是一个真正的问题,但我想了解: 在Win7 4核8 GB系统上运行sklearn from Anaconda distrib 在200.000个样本*200个值表上拟合KMeans模型 使用n-jobs=-1运行:(在脚本中添加if\uuuu name\uuuu='\uuu main\uuuu':行后)我看到脚本以 每个10条线。每个进程使用大约25%的CPU(总计: 100%). 似乎和预期的一样 在n-jobs=1的情况下运行:停留在一个进程上(这并不奇怪),有20个线程,并且还使用1

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

  • 在Win7 4核8 GB系统上运行sklearn from Anaconda distrib
  • 在200.000个样本*200个值表上拟合KMeans模型
  • 使用n-jobs=-1运行:(在脚本中添加
    if\uuuu name\uuuu='\uuu main\uuuu':
    行后)我看到脚本以 每个10条线。每个进程使用大约25%的CPU(总计: 100%). 似乎和预期的一样
  • 在n-jobs=1的情况下运行:停留在一个进程上(这并不奇怪),有20个线程,并且还使用100%的CPU
我的问题:如果库使用所有内核,那么使用n-jobs(和joblib)有什么意义?我错过什么了吗?这是Windows特有的行为吗

  • 如果库使用所有内核,那么使用n-jobs(和joblib)有什么意义

如果将n_作业指定为-1,则它不会使用所有内核。如果设置为1或2,它将只使用一个或两个内核(在Linux下测试完成scikit learn 0.20.3)。

您应该使用
n_作业
joblib
,不要同时使用这两个内核。

说明:

此参数用于指定有多少个并发进程或 线程应该用于与joblib并行的例程

n_作业是一个整数,指定并发作业的最大数量 运营工人。如果给定1,则根本不使用joblib并行性, 这对调试很有用。如果设置为-1,则使用所有CPU。对于 使用-1以下的n个作业(n个CPU+1+n个作业)。例如 n_jobs=-2,使用除一个以外的所有CPU

n_jobs默认为None,表示未设置;通常是 解释为n_jobs=1,除非当前后端 上下文另有规定

有关joblib的使用及其与的交互的更多详细信息 scikit学习,请参考我们的


使用
n_jobs=1
时,它使用其中一个核心的100%cpu。每个进程都在不同的核心中运行。在有4个内核的linux中,我可以清楚地看到cpu的使用情况:
(100%,~5%,~5%,~5%)
当我运行
n_作业=1
(100%,100%,100%,100%)
当运行
n_作业=-1
时。每个进程100%使用给定的核心,但如果您有
n_jobs=1
则只使用一个核心。感谢您的回复。同时,我还无法重现这种现象,所以我猜这是由于机器或笔记本状态中的“某些东西”造成的。有趣的是,我看到H2O(GBM)作为单个进程运行,在我的8核机器上使用了几乎700%的CPU。@Luengo但似乎OMP_NUM_线程在使用sklearn.linear_model.LassoCV(n_作业=-1)时也可以控制最大CPU%。。。你知道为什么吗?(据我所知,sklearn没有使用OpenMP)您能解释一下原因吗?