Python系统监控利器:psutil库详解与实战(2026-07-08)

你是否曾遇到服务器突然卡顿,却不知是CPU飙高还是内存告急?或者你想用几行Python代码,就实时获取系统的CPU、内存、磁盘、网络甚至进程信息?psutil(Python System and Process Utilities)就是为此而生的瑞士军刀。

为什么psutil是系统监控的首选?

psutil是一个跨平台库,支持Windows、Linux、macOS,只需一个pip install psutil即可安装。它能让你像Linux的top命令一样,以编程方式获取系统的每一个细节。

核心能力一览

实战:5分钟搭建系统监控脚本

让我们写一个实际可用的监控脚本,每5秒输出CPU、内存和磁盘状态。

第一步:获取基础信息

import psutil

# CPU使用率(每秒采样一次)
cpu_percent = psutil.cpu_percent(interval=1)
print(f"CPU使用率: {cpu_percent}%")

# 内存使用情况
mem = psutil.virtual_memory()
print(f"内存使用率: {mem.percent}% | 已用: {mem.used / 1e9:.2f}GB / 总计: {mem.total / 1e9:.2f}GB")

第二步:监控磁盘IO和网络流量

# 磁盘读写速率(需要两次采样计算差值)
disk_io_before = psutil.disk_io_counters()
time.sleep(1)
disk_io_after = psutil.disk_io_counters()
read_speed = (disk_io_after.read_bytes - disk_io_before.read_bytes) / 1024  # KB/s
write_speed = (disk_io_after.write_bytes - disk_io_before.write_bytes) / 1024
print(f"磁盘读速: {read_speed:.1f} KB/s | 写速: {write_speed:.1f} KB/s")

第三步:自动告警逻辑

def check_thresholds():
    cpu = psutil.cpu_percent()
    mem = psutil.virtual_memory().percent

    if cpu > 80:
        print(f"⚠️ CPU告警: {cpu}% 超过阈值80%")
    if mem > 90:
        print(f"⚠️ 内存告警: {mem}% 超过阈值90%")

实用建议:将上述代码封装成函数,配合time.sleep(5)循环运行,就能得到一个迷你监控面板。如果想保存数据,可以写入CSV文件或发送到日志系统。

进阶:进程级监控

psutil还能让你看到具体是哪个进程在吃资源:

for proc in psutil.process_iter(['pid', 'name', 'cpu_percent', 'memory_percent']):
    if proc.info['cpu_percent'] > 10:
        print(f"PID {proc.info['pid']}: {proc.info['name']} - CPU {proc.info['cpu_percent']}%")

典型应用场景

行动号召

现在就去试试吧!打开终端,pip install psutil后复制上面的代码运行。你会发现,系统监控从未如此简单。如果你已经熟悉基础用法,不妨挑战一下:结合schedule库实现定时任务,或者用matplotlib实时绘制资源曲线。

免责声明

本文提供的代码和示例仅用于学习和实验目的。在生产环境中使用前,请充分测试以确保不会影响系统稳定性或造成性能负担。作者不对因使用本文内容导致的任何直接或间接损失承担责任。系统监控涉及隐私和权限问题,请遵守相关法律法规。