我正在寫一個Python程序,它將從文本文件加載一個單詞表,然後嘗試使用每個單詞解壓縮存檔。如果沒有使用所有的cpu核心,那就不是很嚴重。 GIL的Bcuz,如果我沒有弄錯,用Python進行線程化並不是一個好的選擇。所以我想獲得cpu_cores的數量,拆分wordlist並使用multiprocessing.process模塊在不同的進程中處理wordlist的不同部分。但是每個進程都會自動固定到cpu內核上嗎?如果沒有,是否有辦法手動固定它們?如何將不同的進程固定到Python中的單個cpu核心
0
A
回答
2
您可以通過導入 import multiprocessing as mp
使用蟒蛇multiprocessing
並通過mp.cpu_count()
找出處理器的數量,並應在大多數平臺上工作。
要在特定CPU內核上啓動程序/進程(在Linux中),您可以使用taskset
並將此guide作爲參考。
另一種跨平臺解決方案是使用python的psutil
包。
但是我建議你使用線程/進程池方法,因爲在我看來你應該讓操作系統把任務分配給每個cpu/core。你可以看看How to utilize all cores with python multiprocessing如何解決這個問題。
相關問題
- 1. multiprocessing.Pool進程鎖定到單個核心
- 2. 如何將muti核心CPU轉換爲單核心繫統
- 3. 固定一個pthread到一個核心
- 4. 性能問題:單個CPU核心與單個CUDA核心
- 5. 如何在多核環境中將進程/線程指定給某個核心?
- 6. 如何使用Nodejs多CPU核心進行多進程?
- 7. CILKPLUS如何在CPU的不同核心之間劃分任務
- 8. 多CPU核心中的Java多線程
- 9. 衡量一個進程獨立的CPU核心使用情況?
- 10. 每個IIS網站的Cpu核心(進程)
- 11. 如何在單個CPU的多個CPU核心上設置關聯,而不是在多個CPU上?
- 12. 將正在運行的進程/線程遷移到不同的核心
- 13. cpu核心與線程
- 14. 將線程分配給特定的CPU核心
- 15. 本地在不同的CPU核心上運行jupyter內核?
- 16. 限制碼頭集裝箱到一個單一的CPU核心
- 17. 在特定核心/ CPU上啓動進程?
- 18. 如何將進程綁定到freebsd/linux中的特定內核
- 19. RcppArmadillo在幾個CPU核心
- 20. Linux - 將單個進程的核心利用率提取到文件中
- 21. Upstart:不同核心上的每個進程
- 22. 如何在python中充分利用帶有線程的CPU核心2
- 23. 與CPU核心的Java線程關係
- 24. 將1個cpu核心分配給1個線程C++
- 25. 如何控制在不同內核中運行的不同進程的進程
- 26. 如何在使用sched_setaffinity固定到核心後解鎖一個線程?
- 27. FPGA上的CPU軟核心
- 28. Xen VPCU固定到15個CPU的
- 29. 如何獲得C#中每個核心的CPU負載?
- 30. 將cpu內核分配給進程 - Linux
感謝您的回答..是否在Windows上工作的任務?如果不是,有沒有Windows替代? – scripter
@scripter我用psutil軟件包更新了我的答案,它是一個可在Windows上工作的跨平臺解決方案。要在Windows上使用taskset,您可能必須使用Cygwin或類似的東西。 – uzr
@scripter,創建進程時,Windows cmd.exe shell的'start'命令可以設置CPU關聯和首選NUMA節點。也許有一種方法可以使用WMI(即wmic.exe)修改正在運行的進程的關聯性。您可以在PowerShell中使用'(Get-Process -Id $ target_pid).ProcessorAffinity = $ affinity_mask'來實現。 – eryksun