根據這個問題和答案 - Python multiprocessing.cpu_count()在4核Nvidia Jetson TK1上返回'1' - Python multiprocessing.cpu_count()在某些系統上的功能輸出反映了主動使用的CPU數量,而不是CPU的數量實際上可以通過 ...
根據這個問題和答案 - Python multiprocessing.cpu_count()在4核Nvidia Jetson TK1上返回'1' - Python multiprocessing.cpu_count()
在某些系統上的功能輸出反映了主動使用的CPU數量,而不是CPU的數量實際上可以通過調用Python程式使用。
一個常見的Python習慣用法是使用return-value cpu_count()
來初始化a中的進程數Pool
。但是,在使用這種“動態CPU激活”策略的系統上,該習慣用法相當嚴重(至少在相對靜止的系統上)。
是否有一些直接(和可移植)方式來獲取Python 可用處理器的數量(與當前使用的數量相反)?
筆記:
-
這個問題是不被接受的答案來回答如何找出使用python CPU的數量,因為在上方掛了一個問題,說明這個問題,列印的內容
/proc/self/status
顯示所有4個內核為可用的程式。 -
在我看來,“可移植”排除了涉及解析內容的任何方法
/proc/self/status
,其格式可能因Linux的發行版本而異,並且在OS X上甚至不存在。(對於任何其他偽文件也是如此,同樣。)
解決方案
我不認為你會得到任何真正便攜的答案,所以我會給出一個正確的答案。
正確*為Linux的回答是len(os.sched_getaffinity(pid))
,哪裡pid
可能是0
當前進程。這個函數在Python 3.3及更高版本中公開; 如果你以前需要它,你將不得不做一些奇特的cffi
編碼。
編輯:您可能會嘗試查看是否可以使用函數(int omp_get_num_procs();
如果存在),這是我在此問題上找到的唯一有意義的答案,但我還沒有從Python中嘗試過。
本文首發於Python黑洞網,博客園同步跟新