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

use*_*561 6 python cpu-usage python-3.x 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]
Run Code Online (Sandbox Code Playgroud)

当 percpu=False 时,预计会提供系统范围的 CPU 使用情况。但是,当我尝试获取每个 CPU 使用情况时,其总和并不等于系统范围的使用情况。我的问题是当传递 percpu=True 和 percpu=False 时 cpu_percent 函数究竟如何工作?

Azs*_*sgy 1

根据我的实验和阅读代码,它看起来像psutil.cpu_percentpercpu=False,100% 意味着所有核心都 100% 使用。代码注释将此描述为“Windows 任务管理器样式”。这大致相当于每个核心的平均 CPU 利用率。相反,您可能习惯于 unix 风格,它只是将每个核心的利用率相加,因此对于您的 4 核机器来说,最大值将为 400%。

有趣的是,psuitl.Process.cpu_percent计算的是 Unix 风格的利用率。