python - psutil.cpu_percent() 函数如何工作?

标签 python python-3.x cpu-usage psutil

我在 python 解释器中执行以下两个语句。

>>> psutil.cpu_percent(interval=None, percpu=False)
2.0
>>> psutil.cpu_percent(interval=None, percpu=True)
[1.5, 1.6, 3.7, 3.5]

当 percpu=False 时,预计会给出系统范围的 CPU 使用率。但是,当我尝试获取每个 CPU 使用率时,它的总和并不等于系统范围的使用率。我的问题是当 percpu=True 和 percpu=False 时 cpu_percent 函数究竟是如何工作的 通过了吗?

最佳答案

您没有得到预期结果的原因有两个。

首先,percpu=False 返回的值应该是平均值,而不是 percpu=True 返回值的总和。换句话说,使用 percpu=False 的调用返回所有核心/CPU 的平均利用率。这是有道理的,因为如果您有 4 个内核,其中一个内核 100% 繁忙,但其他三个内核空闲(利用率为 0%),则仅使用了总 CPU 容量的 25%。

第二个问题是,当您传递 interval=None 时,您会得到自上次调用 cpu_percent 以来测量的利用率。引自 the doc :

When interval is 0.0 or None compares system CPU times elapsed since last call or module import, returning immediately.

所以您实际上是在比较不同的衡量标准,显然 CPU 利用率可能会在这些衡量标准之间发生变化。

关于python - psutil.cpu_percent() 函数如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49514617/

相关文章:

python - 在Electron中执行Unix可执行文件(python)

javascript - 从ajax POST方法获取数据后,在django中打开另一个窗口

python - 不同的语法错误在输出中隐藏行

java - 使用 JMX/MBean 监控 Cassandra CPU 使用情况

java - 在java中解析virt-top

Python/Django UnicodeDecodeError 'ascii' 编解码器无法解码

python - 将日期时间戳转换为本地纪元日期时间

python - 创建与每一行具有相同列表的新 pandas 列?

python - 无法使用selenium同时从两个不同深度收集信息

Android 内存/电池使用情况