Python神器:psutil库使用详解
Python神器:psutil库使用详解
psutil
是 Python 中一个功能强大的第三方库,用于获取系统的运行状况和硬件信息,如 CPU、内存、磁盘、网络等资源的使用情况。这使得它在系统监控、资源管理和性能调试等场景中大有用途。
本文将全面介绍 psutil
的使用,配以详细代码示例和图解,助你快速上手这一神器!
一、psutil 的安装与基本概念
1.1 安装
在命令行中运行以下命令安装 psutil
:
pip install psutil
1.2 psutil 能做什么?
- CPU 信息:获取 CPU 使用率、逻辑/物理核心数等。
- 内存信息:包括总内存、可用内存、内存占用率等。
- 磁盘信息:获取磁盘分区、使用情况和 IO 信息。
- 网络信息:查看网络接口、连接状态和流量统计。
- 进程管理:列举和管理系统进程。
二、获取系统资源信息
2.1 获取 CPU 信息
示例代码
import psutil
# CPU 核心数
print(f"物理核心数: {psutil.cpu_count(logical=False)}")
print(f"逻辑核心数: {psutil.cpu_count(logical=True)}")
# CPU 使用率
print(f"CPU 使用率: {psutil.cpu_percent(interval=1)}%")
# 每个核心的使用率
print(f"每个核心的使用率: {psutil.cpu_percent(interval=1, percpu=True)}")
输出示例
物理核心数: 4
逻辑核心数: 8
CPU 使用率: 12.3%
每个核心的使用率: [5.3, 10.1, 20.7, 12.9, 4.8, 7.5, 15.2, 10.6]
图解
2.2 获取内存信息
示例代码
# 获取内存使用情况
memory_info = psutil.virtual_memory()
print(f"总内存: {memory_info.total / 1024**3:.2f} GB")
print(f"已用内存: {memory_info.used / 1024**3:.2f} GB")
print(f"可用内存: {memory_info.available / 1024**3:.2f} GB")
print(f"内存使用率: {memory_info.percent}%")
输出示例
总内存: 16.00 GB
已用内存: 8.24 GB
可用内存: 7.76 GB
内存使用率: 51.5%
图解
一个简单的内存使用率饼图可以清晰展示当前内存的占用情况:
2.3 获取磁盘信息
示例代码
# 获取磁盘分区
partitions = psutil.disk_partitions()
for partition in partitions:
print(f"分区设备: {partition.device}")
print(f"挂载点: {partition.mountpoint}")
print(f"文件系统类型: {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}%")
输出示例
分区设备: /dev/sda1
挂载点: /
文件系统类型: ext4
磁盘总容量: 512.00 GB
已用空间: 120.23 GB
可用空间: 391.77 GB
磁盘使用率: 23.5%
2.4 获取网络信息
示例代码
# 获取网络接口信息
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")
# 获取网络连接信息
connections = psutil.net_connections(kind='inet')
for conn in connections[:5]: # 仅展示前 5 条连接
print(f"本地地址: {conn.laddr}, 远程地址: {conn.raddr}, 状态: {conn.status}")
输出示例
已发送数据: 50.32 MB
已接收数据: 120.89 MB
本地地址: 127.0.0.1:8080, 远程地址: None, 状态: LISTEN
本地地址: 192.168.1.5:52415, 远程地址: 192.168.1.1:80, 状态: ESTABLISHED
三、进程管理
3.1 列举所有进程
示例代码
# 获取所有进程
for proc in psutil.process_iter(['pid', 'name', 'cpu_percent']):
print(f"PID: {proc.info['pid']}, 名称: {proc.info['name']}, CPU 使用率: {proc.info['cpu_percent']}%")
示例输出
PID: 1, 名称: systemd, CPU 使用率: 0.0%
PID: 1234, 名称: python3, CPU 使用率: 10.3%
PID: 5678, 名称: chrome, CPU 使用率: 5.2%
3.2 操作进程
示例代码
# 获取某个进程的信息
pid = 1234 # 替换为实际 PID
try:
process = psutil.Process(pid)
print(f"进程名: {process.name()}")
print(f"进程状态: {process.status()}")
print(f"内存使用: {process.memory_info().rss / 1024**2:.2f} MB")
print(f"CPU 使用率: {process.cpu_percent(interval=1)}%")
# 杀死进程
process.terminate()
print(f"进程 {pid} 已终止")
except psutil.NoSuchProcess:
print(f"进程 {pid} 不存在")
四、实时监控示例
一个实时监控系统资源的 Python 程序:
import psutil
import time
while True:
cpu = psutil.cpu_percent(interval=1)
memory = psutil.virtual_memory().percent
disk = psutil.disk_usage('/').percent
print(f"CPU: {cpu}%, 内存: {memory}%, 磁盘: {disk}%")
time.sleep(1)
运行后可以实时查看系统的资源占用情况。
五、总结
psutil
是一个功能全面且易用的 Python 库,适用于多种场景,包括:
- 开发系统监控工具;
- 实现资源管理与性能调试;
- 构建服务器性能监控脚本。
通过本文的详细教程,相信你已经掌握了 psutil
的核心功能,并能灵活运用于实际项目中!
评论已关闭