[英]Portable way of detecting number of *usable* CPUs in Python
根據這個問題和答案 - Python multiprocessing.cpu_count()在4核Nvidia Jetson TK1上返回'1' - Python的multiprocessing.cpu_count()
函數在某些系統上的輸出反映了主動使用的CPU數量,而不是調用Python程序實際可用的CPU數。
常見的Python習慣用法是使用cpu_count()
的返回值來初始化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。
使用psutil:
來自文檔https://psutil.readthedocs.io/en/latest/ :
>>> import psutil
>>> psutil.cpu_count()
4
>>> psutil.cpu_count(logical=False) # Ignoring virtual cores
2
這是便攜式的
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.