在Python中檢測*可用* CPU數量的便攜方式

根據這個問題和答案 - 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

  1. 這個問題是不被接受的答案來回答如何找出使用python CPU的數量,由於在上方掛了一個問題,說明這個問題,打印的內容/proc/self/status顯示全部4個內核爲可用的程序。code

  2. 在我看來,「可移植」排除了涉及解析內容的任何方法/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黑洞網,博客園同步跟新
同步

相關文章
相關標籤/搜索