Skip to main content
 首页 » 编程设计

python之psutil:获取所有进程的cpu

2025年05月04日25yjmyzz

也许我忽略了一些东西,但我无法弄清楚如何在不遍历所有进程的情况下一次获取所有进程的 current_process.cpu_percent(interval=0.1)。当前迭代需要 process_count * interval 秒才能完成。有解决办法吗?

到目前为止我在做:

#!/usr/bin/env python2 
import psutil 
 
cpu_count = psutil.cpu_count() 
 
processes_info = [] 
for proc in psutil.process_iter(): 
    try: 
        pinfo = proc.as_dict(attrs=['pid', 'username', 'memory_info', 'cpu_percent', 'name']) 
 
        current_process = psutil.Process(pid=pinfo['pid']) 
 
        pinfo["cpu_info"] = current_process.cpu_percent(interval=0.1) 
        processes_info.append(pinfo) 
 
    except psutil.NoSuchProcess: 
        pass 
 
print processes_info 

据我所知,我不能将 cpu-percent 包含到 attr 列表中,因为帮助说明

When interval is 0.0 or None compares system CPU times elapsed since last call or module import, returning immediately. That means the first time this is called it will return a meaningless 0.0 value which you are supposed to ignore.

请您参考如下方法:

为了计算 CPU%,您必须等待。 不过,您不必为每个过程/迭代 等待 0.1 秒。 相反,遍历所有进程,使用 interval=0 调用 cpu_percent(),忽略返回值,然后等待 0.1 秒(或更多)。 第二次迭代所有进程 cpu_percent(interval=0) 将返回一个有意义的值。