簡體   English   中英

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

[英]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 可用處理器的數量(與當前使用的數量相反)?

筆記:

  1. 這個問題是不被接受的答案來回答如何找出使用python CPU的數量 ,因為在這個問題上鏈接的問題如前所述,打印的內容/proc/self/status顯示所有4個內核作為可用於該計划。

  2. 在我看來,“可移植”排除了涉及解析/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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM