我想在不同的線程中訓練多個類的svms。 有沒有人知道scikits.learn.svm是否釋放GIL? 我在谷歌上沒有找到任何答案。 謝謝Scikits學會釋放python GIL嗎?
2
A
回答
3
不,scikit學習不玩GIL的任何技巧。相反,它使用joblib來表示它的所有並行性,它產生了多個進程來完成它的工作。您可以使用自定義joblib Parallel
構造實現您想要的效果。
如果您打算在具有不同設置的相同數據集上訓練多個分類器以找到最佳分類器,請考慮使用GridSearchCV
類,它爲您處理並行性。
2
一些sklearn Cython類在性能關鍵部分內部釋放GIL,例如0.15(2014年初發布)和libsvm包裝器所做的決策樹(例如在隨機森林中使用)。
雖然這不是一般規則。如果您確定sklearn中可以更改爲釋放GIL的性能關鍵的cython代碼,請隨時發送pull請求。
相關問題
- 1. 在C++代碼中釋放Python GIL
- 2. 在Cython中釋放GIL的危險?
- 3. Scikits學習定義MAX-ITER
- 4. zlib模塊是否在Python 3中釋放全局解釋器鎖(GIL)?
- 5. 摧毀一個子解釋器後釋放GIL
- 6. python不會釋放元組的內存,會嗎?
- 7. 在scikits機器學習中缺少值
- 8. python scikits學習 - 支持向量機選項
- 9. python scikits學習 - 分離超平面方程
- 10. 雙釋放會導致崩潰嗎?
- 11. 會調用release釋放autorelease對象嗎?
- 12. Python MySQLdb不會釋放表鎖
- 13. Python GIL:是django save()阻塞?
- 14. Python GIL和多線程
- 15. 在Python上避免GIL
- 16. 的Python 3.3 - subprocess.call和GIL
- 17. Python GIL和全局變量
- 18. file.read()多和GIL
- 19. 什麼是全局解釋器鎖(GIL)?
- 20. Python釋放線程
- 21. 是關於GIL的python dict的len()原子嗎?
- 22. 運行單獨的python進程避免GIL嗎?
- 23. scikits statsmodels - ImportError
- 24. 我應該釋放self.view嗎?
- 25. 我需要釋放CFError嗎?
- 26. 你需要釋放NSData嗎?
- 27. 我應該釋放NSImage嗎?
- 28. 它需要釋放AVCaptureVideoPreviewLayer嗎?
- 29. Cython GIL SIGSEGV
- 30. 釋放會員指針
感謝您的意見,不幸的是,這個問題實際上並沒有解決,因爲我需要依賴外部庫來實現使用不同線程的並行機制(用於與更大應用程序的其他部分兼容)。因此,我想爲svm找到一個替代庫來釋放GIL ..或者欺騙scikits.learn來做到這一點。你可能有什麼建議嗎? –
您可能想在子流程中運行scikit-learn代碼。它生成的分類器可以被酸洗,所以你可以很容易地在它們之間傳輸它們;唯一的問題是以有效的方式傳輸訓練數據(可能通過文件系統?)。 –
另外,libsvm包裝器是用[Cython](http://cython.org)編寫的。我認爲將封裝器代碼打包爲[發佈GIL]應該相當簡單(http://docs.cython.org/src/userguide/external_C_code.html#acquiring-and-releasing-the-gil)。如果你這樣做,並且它解決了你的問題,請在github上提交你的更改作爲pull請求。 另請注意,scikit-learn估計器並不意味着線程安全:跨線程使用不相關的估計器實例。 – ogrisel