Python psutil库教程:系统监控与进程管理工具详解
- Python
- 2025-07-24
- 1672
Python psutil库教程:系统监控与进程管理
全面掌握系统资源监控与进程管理技术
什么是psutil?
psutil(process and system utilities)是一个跨平台库,用于在Python中检索有关运行进程和系统利用率 (CPU、内存、磁盘、网络、传感器)的信息。它主要用于系统监控、分析和限制进程资源以及管理正在运行的进程。
主要特性:
- 跨平台支持:Windows, Linux, macOS, FreeBSD等
- 系统信息获取:CPU、内存、磁盘、网络、传感器数据
- 进程管理:进程信息获取、进程管理、资源限制
- 用户友好:简单易用的API,丰富的文档
- 高效性能:使用原生系统API实现,性能优异
安装psutil
使用pip可以轻松安装psutil:
# 安装最新版本的psutil
pip install psutil
# 安装指定版本
pip install psutil==5.9.0
核心功能与示例
1. CPU信息获取
使用psutil可以轻松获取CPU相关信息,包括使用率、核心数、频率等。
import psutil
# 获取CPU逻辑核心数量
print(f"逻辑CPU数量: {psutil.cpu_count()}")
# 获取CPU物理核心数量
print(f"物理CPU数量: {psutil.cpu_count(logical=False)}")
# 获取CPU当前使用率
print(f"当前CPU使用率: {psutil.cpu_percent(interval=1)}%")
# 获取每个CPU核心的使用率
print(f"每个核心使用率: {psutil.cpu_percent(interval=1, percpu=True)}")
# 获取CPU频率信息
freq = psutil.cpu_freq()
print(f"当前频率: {freq.current}MHz, 最小频率: {freq.min}MHz, 最大频率: {freq.max}MHz")
2. 内存信息获取
psutil提供了详细的内存使用情况,包括物理内存和交换空间。
import psutil
# 获取物理内存信息
mem = psutil.virtual_memory()
print(f"总内存: {mem.total / (1024**3):.2f} GB")
print(f"已用内存: {mem.used / (1024**3):.2f} GB")
print(f"内存使用率: {mem.percent}%")
# 获取交换内存信息
swap = psutil.swap_memory()
print(f"交换空间总量: {swap.total / (1024**3):.2f} GB")
print(f"交换空间使用率: {swap.percent}%")
3. 磁盘信息获取
使用psutil可以监控磁盘分区、使用情况和IO统计信息。
import psutil
# 获取磁盘分区信息
partitions = psutil.disk_partitions()
for partition in partitions:
print(f"设备: {partition.device}, 挂载点: {partition.mountpoint}, 文件系统: {partition.fstype}")
# 获取磁盘使用情况
disk_usage = psutil.disk_usage('/')
print(f"磁盘总空间: {disk_usage.total / (1024**3):.2f} GB")
print(f"已用空间: {disk_usage.used / (1024**3):.2f} GB")
print(f"空闲空间: {disk_usage.free / (1024**3):.2f} GB")
print(f"使用率: {disk_usage.percent}%")
# 获取磁盘IO统计
disk_io = psutil.disk_io_counters()
print(f"读取次数: {disk_io.read_count}, 写入次数: {disk_io.write_count}")
print(f"读取字节: {disk_io.read_bytes / (1024**2):.2f} MB")
print(f"写入字节: {disk_io.write_bytes / (1024**2):.2f} MB")
4. 网络信息获取
psutil可以监控网络接口、连接状态和带宽使用情况。
import psutil
# 获取网络接口信息
net_io = psutil.net_io_counters()
print(f"发送字节数: {net_io.bytes_sent / (1024**2):.2f} MB")
print(f"接收字节数: {net_io.bytes_recv / (1024**2):.2f} MB")
# 获取网络接口详情
addrs = psutil.net_if_addrs()
for interface_name, interface_addresses in addrs.items():
for address in interface_addresses:
print(f"接口: {interface_name}, IP地址: {address.address}")
# 获取当前网络连接
connections = psutil.net_connections(kind='inet')
for conn in connections[:5]: # 只显示前5个连接
print(f"协议: {conn.type}, 本地地址: {conn.laddr}, 远程地址: {conn.raddr}, 状态: {conn.status}")
5. 进程管理
psutil的核心功能之一是进程管理,可以获取进程信息、管理进程状态。
import psutil
# 获取所有进程ID
pids = psutil.pids()
print(f"系统进程数量: {len(pids)}")
# 获取前5个进程信息
for proc in psutil.process_iter(['pid', 'name', 'username'])[:5]:
print(proc.info)
# 获取特定进程的详细信息
pid = psutil.pids()[0] # 获取第一个进程
p = psutil.Process(pid)
print(f"进程ID: {p.pid}")
print(f"进程名称: {p.name()}")
print(f"进程状态: {p.status()}")
print(f"创建时间: {p.create_time()}")
print(f"CPU使用率: {p.cpu_percent(interval=0.1)}%")
print(f"内存使用: {p.memory_info().rss / (1024**2):.2f} MB")
print(f"打开的文件: {p.open_files()}")
print(f"关联的网络连接: {p.connections()}")
# 终止进程
# p.terminate() # 终止进程
# p.kill() # 强制终止进程
6. 系统信息
psutil还可以获取其他系统信息,如启动时间、登录用户等。
import psutil
from datetime import datetime
# 获取系统启动时间
boot_time = psutil.boot_time()
print(f"系统启动时间: {datetime.fromtimestamp(boot_time).strftime('%Y-%m-%d %H:%M:%S')}")
# 获取登录用户
users = psutil.users()
for user in users:
print(f"用户名: {user.name}, 终端: {user.terminal}, 登录时间: {datetime.fromtimestamp(user.started).strftime('%Y-%m-%d %H:%M:%S')}")
# 获取系统平均负载(仅Linux/Unix)
if hasattr(psutil, "getloadavg"):
load_avg = psutil.getloadavg()
print(f"系统平均负载(1min, 5min, 15min): {load_avg}")
# 获取电池状态(如果可用)
battery = psutil.sensors_battery()
if battery:
print(f"电池电量: {battery.percent}%, 是否充电: {battery.power_plugged}")
实际应用场景
psutil库在实际开发中有广泛应用,例如:
- 系统监控工具:开发类似任务管理器的系统资源监控工具
- 性能分析:监控应用程序的资源消耗情况
- 自动化运维:编写脚本监控服务器资源使用情况
- 进程管理:查找并终止异常进程
- 资源限制:限制特定进程的资源使用量
- 安全监控:检测异常网络连接或进程活动
总结
psutil是一个功能强大且易于使用的Python库,为系统监控和进程管理提供了全面的解决方案。通过本教程,您应该已经掌握了:
- 如何安装psutil库
- 获取CPU、内存、磁盘和网络信息的方法
- 进程管理的基本操作
- 其他系统信息的获取方式
- psutil在实际开发中的应用场景
无论您是开发系统监控工具、性能分析脚本,还是进行自动化运维工作,psutil都是不可或缺的强大工具。它的跨平台特性使得同一套代码可以在多种操作系统上运行,大大提高了开发效率。
本文由LuCong于2025-07-24发表在吾爱品聚,如有疑问,请联系我们。
本文链接:https://521pj.cn/20256381.html
发表评论