我正在i,j
上运行双嵌套循环,并且在内部循环中使用了sklearn的PCA函数。尽管我没有使用任何并行处理程序包,但任务管理器告诉我,我所有的CPU都在80%-100%之间运行。我对此感到惊讶,并有两个问题:
1)这是怎么回事? python如何决定使用多个CPU?如何打破循环?打印出i,j
值,它们仍然按顺序完成。
2)通过将其与程序包显式并行化,会加快代码的速度吗?或者差异可以忽略不计?
答案 0 :(得分:0)
因此,一种解释是,代码n_jobs
中的某个地方是sklearn进程的有效参数。不过我有点困惑,因为只有专用的PCA工具在文档中才包含该参数。
https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html(否n_jobs
)
https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.KernelPCA.html(已有n_jobs
)
https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.MiniBatchSparsePCA.html(已有n_jobs
)
Numpy可能也是罪魁祸首,但是您必须深入研究实现才能开始检查sklearn
在使用numpy
并行工具的地方。
Sklearn的着陆页专门用于优化现有sklearn
工具(并编写您自己的工具。)它们提供各种建议,并特别提及joblib
。
Check it out