[英]Python Using Multiple Cores Without Me Asking
我正在i,j
運行雙嵌套循環i,j
並且在內部循環內使用sklearn的PCA函數。 盡管我沒有使用任何並行處理程序包,但任務管理器告訴我,我所有的CPU都在80%-100%之間運行。 我對此感到驚訝,並有兩個問題:
1)這是怎么回事? python如何決定使用多個CPU? 如何打破循環? 打印出i,j
值,它們仍在按順序完成。
2)通過將其與程序包顯式並行化,會加快代碼的速度,還是可以忽略不計?
“幾個scikit-learn工具...內部通過傳遞n_jobs> 1作為參數,在內部依靠Python的多處理模塊將執行並行化到多個Python進程上。”
因此,一種解釋是,代碼中的某處n_jobs
是sklearn進程的有效參數。 但是我有點困惑,因為只有專用的PCA工具在文檔中有該參數。
https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html (否n_jobs
)
https://scikit-learn.org/stable/modules/generation/sklearn.decomposition.KernelPCA.html (具有n_jobs
)
https://scikit-learn.org/stable/modules/generation/sklearn.decomposition.MiniBatchSparsePCA.html (具有n_jobs
)
Numpy可能也是罪魁禍首,但是您必須深入研究實現才能開始檢查sklearn
在哪里使用numpy
並行工具。
Sklearn的着陸頁專門用於優化現有sklearn
工具(以及編寫您自己的工具)。它們提供了各種建議,並特別提及joblib
。 看看這個
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.