我正在尝试测量进程树的 cpu 使用率。
目前获取进程(没有子进程)的 cpu_usage 就可以了,但我得到了奇怪的结果。
import psutil
p = psutil.Process(PID)
p.cpu_percent
还给我float
>100
, 这怎么可能呢?
btw PID
是简单的 pid
def foo():
i = 0
while True:
i += 1
根据任务管理器,它的CPU使用率大约是12%
我想要得到的输出12.5
或类似的东西。
我阅读了一些有关 psutil 的文档,这是我得到的:
注意:百分比 > 100 是合法的,因为它可能是由在不同 CPU 内核上运行 > 多个线程的进程产生的。
所以为了摆脱 >100 你应该这样做:
注意:返回的值明确未在所有 CPU 核心之间平均分配(与 psutil.cpu_percent() 不同)。这意味着在具有 2 个 CPU 核心的系统上运行的繁忙循环进程将被报告为具有 100% CPU 利用率,而不是 50%。这样做是为了与 UNIX 的“top”实用程序保持一致,也为了更容易识别占用 CPU 资源的进程(独立于 CPU 核心的数量)。必须注意的是,在上面的示例中,Windows 上的 taskmgr.exe 将报告 50% 的使用率。要模拟 Windows 的 taskmgr.exe 行为,您可以执行以下操作:
p.cpu_percent() / psutil.cpu_count()。
由于我从其他地方得到了这个答案,我会给你一个链接来检查它
出去:http://psutil.readthedocs.io/en/release-2.2.1/#psutil.Process.cpu_percent http://psutil.readthedocs.io/en/release-2.2.1/#psutil.Process.cpu_percent
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)