如何使用Python获取Linux系统CPU占用最高的前5个应用/进程列表
Python获取Linux CPU占用Top5进程实现方案
你已经在使用的psutil库就可以直接实现该需求,无需引入额外第三方依赖,具体实现逻辑如下:
- 调用
psutil.process_iter()遍历系统所有进程,同时指定要获取的进程属性为进程名name、CPU占用率cpu_percent - 调用
cpu_percent时传入小时间间隔参数做短采样,保证返回的CPU占用数据准确性 - 跳过无权限访问、已退出的异常进程,过滤CPU占用为0的进程
- 按CPU占用率降序排序后取前5个进程,格式化输出为要求的JSON结构
可直接运行的示例代码
import psutil import json def get_top5_cpu_processes(): process_list = [] for proc in psutil.process_iter(["name", "cpu_percent"]): try: proc_info = proc.info # 间隔100ms采样获取CPU占用率,数值精度可满足常规需求 proc.cpu_percent(interval=0.1) if proc_info["cpu_percent"] > 0: process_list.append({ "name": proc_info["name"], "cpu": round(proc_info["cpu_percent"], 1) }) except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess): continue # 按CPU占用率从高到低排序 process_list.sort(key=lambda x: x["cpu"], reverse=True) return process_list[:5] if __name__ == "__main__": result = get_top5_cpu_processes() print(json.dumps(result, indent=4, ensure_ascii=False))
常见适配调整说明
- 默认返回的CPU占用率为单核心满值计算逻辑(总满值为
核心数*100%),如果需要和htop展示的总CPU占比逻辑对齐(总满值为100%),可以将CPU计算逻辑改为:round(proc_info["cpu_percent"] / psutil.cpu_count(), 1) - 可以根据需求调整
interval参数的数值,数值越大CPU占用率统计越准确,对应脚本阻塞采样的时间越长
内容的提问来源于stack exchange,提问作者S Andrew
相关产品推荐
相关产品推荐

