我注意到當我運行我的CPU依賴性很強的python程序時,它只使用一個核心。我運行它時可以爲程序分配多個內核?將多個核心分配給一個Python程序
5
A
回答
12
您必須爲多個內核明確編程。有關Python中許多並行處理解決方案,請參閱this page上的對稱多處理選項。 Parallel Python是一個不錯的選擇,如果你不能比較其他選項,請看例子here。
雖然有些問題不能利用多核。想想你在三個朋友的幫助下如何能夠更快地跑上樓梯。不會發生!
4
如果您的問題的任何部分都可以並行運行,你應該看看multiprocessing module
4
我不知道爲什麼沒有人提到的CPython的GIL(全局解釋器鎖)呢。這基本上意味着一個Python解釋器中的多個線程不能使用多個內核的功能,因爲許多操作受全局鎖保護,以保證線程安全。這隻適用於少量應用程序 - 受CPU限制的應用程序。有關更多信息,只需搜索術語「GIL」,就已經有很多問題了(例如that one)。
當然,這個答案假定您實際上正在使用多個線程,否則您將無法使用多個核心(multiprocessing將是另一種可能性)。
相關問題
- 1. 將線程分配給核心的API
- 2. 將工作分配給多個核心:Hadoop或Scala的並行集合?
- 3. 如何將一個URL的請求分配給多個線程?
- 4. 如何在多核環境中將進程/線程指定給某個核心?
- 5. 如何擁有多個應用程序 - 一個核心數據?
- 6. 將線程分配給特定的CPU核心
- 7. 將核心分配給進程的好處
- 8. Erlang會自動爲多個核心和多個處理器分配線程嗎?
- 9. 將一個System.Action分配給一個BackgroundWorker
- 10. 在多個核心上運行Python
- 11. 如何在.NET核心分配剃刀查看另一個應用程序
- 12. Python 3將2個值分配給一個變量
- 13. OpenMP將一個函數的執行分配給一個線程?
- 14. 什麼是一個好的多核心64位「Hello World」程序?
- 15. 一個值分配給形狀,在Python
- 16. 將多個值分配給屬性
- 17. 將IObserver分配給多個IObservable實例
- 18. 將多個用戶分配給「任務」
- 19. 如何將多個UIButton分配給UITextView
- 20. 將多個蒙版分配給SKCropNode
- 21. 將任務分配給多個用戶
- 22. Ansible:將多個EIP分配給ENI
- 23. VHDL將多個值分配給一個信號
- 24. 將同一個數據源分配給多個DropDownLists?
- 25. 將多個CSS類分配給html中的一個元素
- 26. 將一個類的多個實例分配給變量
- 27. 使用BULK COLLECT將多個列分配給一個集合
- 28. 如何將多個日期格式分配給一個變量
- 29. 如何同時將多個名稱分配給一個C#類
- 30. 將一個值分配給多個變量