psutil:测量特定进程的cpu使用情况

6 python cpu-usage psutil

我试图测量进程树的CPU使用率.

目前获取进程的cpu_usage(没有子进程)会有,但我得到了奇怪的结果.

import psutil
p = psutil.Process(PID)
p.cpu_percent
Run Code Online (Sandbox Code Playgroud)

让我回来float> 100,这怎么可能?

btw PID是简单的pid

def foo():
    i = 0
    while True:
        i += 1
Run Code Online (Sandbox Code Playgroud)

根据任务管理器的cpu使用情况而定 12%

我想得到一个12.5类似的输出.

ser*_*enp 9

我读了一些关于psutil的文档,这是我得到的:

注意:百分比> 100是合法的,因为它可能来自在多个CPU核心上运行多个线程的进程.

所以为了摆脱> 100你应该做这样的事情:

注意:返回的值在所有CPU核心之间均匀分配(与psutil.cpu_percent()不同).这意味着在具有2个CPU内核的系统上运行的繁忙循环进程将报告为具有100%CPU利用率而不是50%.这样做是为了与UNIX的"顶级"实用程序保持一致,并且还可以更容易地识别占用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