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

时间:2016-12-18 08:52:14

标签: python cpu-usage psutil

我试图测量进程树的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或类似的输出。

1 个答案:

答案 0 :(得分:7)

我阅读了一些关于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()。

  

由于我从其他地方得到了这个答案,我会给你一个检查它的链接 out:http://psutil.readthedocs.io/en/release-2.2.1/#psutil.Process.cpu_percent