我在 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/