首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >学习n_jobs

学习n_jobs
EN

Stack Overflow用户
提问于 2015-09-24 12:38:30
回答 3查看 51.9K关注 0票数 20

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

  • 在Win7 4核8gb系统上运行Anaconda的学习技巧
  • 在200.000个样本*200个值表上拟合KMeans模型。
  • 运行n= -1:(在我的脚本中添加if __name__ == '__main__':行之后),我看到脚本启动了4个进程,每个进程有10个线程。每个进程大约使用CPU的25% (总数: 100%)。似乎像预期的那样起作用了
  • 运行n个作业= 1:在一个进程上运行(并不意外),有20个线程,并且也使用100%的CPU。

我的问题是:如果库无论如何都使用所有内核,那么使用n作业(和joblib)又有什么意义呢?我是不是遗漏了什么?这是Windows特有的行为吗?

EN

回答 3

Stack Overflow用户

发布于 2019-03-21 19:02:14

  • 如果库无论如何都使用所有内核,那么使用n作业(和joblib)又有什么意义呢?

如果您将n_jobs指定为-1,则它将使用所有核心。如果它被设置为1或2,它将只使用一个或两个核心(在Linux下测试已完成的scikit-学习0.20.3 )。

票数 8
EN

Stack Overflow用户

发布于 2020-06-01 12:16:38

文档说:

此参数用于指定应该使用多少并发进程或线程来处理与joblib并行的例程。 n_jobs是一个整数,指定并发运行的工作人员的最大数量。如果给定1,则根本不使用joblib并行性,这对于调试非常有用。如果设置为-1,则使用所有CPU。对于低于-1的n_jobs,使用(n_cpus +1+ n_jobs) .例如,对于n_jobs=-2,只使用一个CPU。 默认情况下,n_jobs是None,意思是unset;它通常将被解释为n_jobs=1,除非当前joblib.Parallel后端上下文另有规定。 要了解更多关于joblib的使用及其与scikit的交互的详细信息,请参阅我们的平行注释

票数 5
EN

Stack Overflow用户

发布于 2020-01-23 09:15:16

您应该使用n_jobsjoblib,不要同时使用两者。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32761556

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档