我在 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 的引用:
因此,您实际上是在比较不同的度量,显然这些度量之间的 CPU 利用率可能会发生变化。
关于python - psutil.cpu_percent() 函数如何工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49514617/