Python在不询问我的情况下使用多核

时间:2018-12-28 19:32:25

标签: python multithreading scikit-learn multiprocessing

我正在i,j上运行双嵌套循环,并且在内部循环中使用了sklearn的PCA函数。尽管我没有使用任何并行处理程序包,但任务管理器告诉我,我所有的CPU都在80%-100%之间运行。我对此感到惊讶,并有两个问题:

1)这是怎么回事? python如何决定使用多个CPU?如何打破循环?打印出i,j值,它们仍然按顺序完成。

2)通过将其与程序包显式并行化,会加快代码的速度吗?或者差异可以忽略不计?

1 个答案:

答案 0 :(得分:0)

"Several scikit-learn tools... rely internally on Python’s multiprocessing module to parallelize execution onto several Python processes by passing n_jobs > 1 as argument."

因此,一种解释是,代码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工具(并编写您自己的工具。)它们提供各种建议,并特别提及joblibCheck it out