Python使用多个核心而无需我询问



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

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

2) 通过显式地将代码与包并行化,代码的速度会更快吗?还是差异可以忽略不计?

"几个scikit学习工具…内部依赖Python的多处理模块,通过传递n_jobs>1作为参数,将执行并行化到几个Python进程上。">

因此,一种解释是,代码中的某个地方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。看看

相关内容

  • 没有找到相关文章

最新更新