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