簡體   English   中英

Python在不詢問我的情況下使用多核

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM