使用 Python 的 psutil 库进行系统资源监控
在开发应用程序或进行系统管理时,我们常常需要获取系统的资源使用情况,比如 CPU、内存、磁盘等的利用率。
Python 提供了一个非常强大的库 psutil,可以帮助开发者轻松地获取这些信息。本文将介绍 psutil 库的基本使用方法,并展示如何用它来监控系统资源。
1.安装 psutil 库
首先,我们需要安装 psutil 库。可以通过 pip 来安装:
pip install psutil
2.获取 CPU 信息
使用 psutil,我们可以轻松获取 CPU 的利用率、核心数以及每个核心的使用情况。
获取 CPU 使用率
使用 psutil.cpu_percent() 获取整个系统的 CPU 使用率,单位为百分比。我们可以设置 interval 参数来指定时间间隔,例如:
import psutil# 获取 CPU 使用率
cpu_usage = psutil.cpu_percent(interval=1) # 等待1秒钟后获取数据
print(f"CPU 使用率:{cpu_usage}%")
获取每个 CPU 核心的使用情况
如果你想查看每个 CPU 核心的使用情况,可以使用 psutil.cpu_percent(percpu=True):
cpu_cores_usage = psutil.cpu_percent(interval=1, percpu=True)
print("每个 CPU 核心的使用率:", cpu_cores_usage)
3. 获取内存信息
psutil 还可以帮助我们获取系统的内存使用情况,包括总内存、已用内存、剩余内存等。
获取系统内存使用情况
memory = psutil.virtual_memory()
print(f"总内存: {memory.total / (1024 ** 3):.2f} GB")
print(f"已用内存: {memory.used / (1024 ** 3):.2f} GB")
print(f"可用内存: {memory.available / (1024 ** 3):.2f} GB")
print(f"内存使用率: {memory.percent}%")
获取交换空间(Swap)信息
交换空间是硬盘上用于虚拟内存的区域,可以查看它的使用情况:
swap = psutil.swap_memory()
print(f"交换空间总大小: {swap.total / (1024 ** 3):.2f} GB")
print(f"交换空间已用: {swap.used / (1024 ** 3):.2f} GB")
print(f"交换空间使用率: {swap.percent}%")
4.获取磁盘信息
psutil 还提供了获取磁盘使用情况和磁盘分区信息的功能。
获取磁盘使用情况
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}%")
获取磁盘分区信息
disk_partitions = psutil.disk_partitions()
for partition in disk_partitions:print(f"磁盘分区: {partition.device}")print(f"挂载点: {partition.mountpoint}")print(f"文件系统类型: {partition.fstype}")
5.获取网络信息
psutil 还可以用于监控系统的网络连接和带宽使用情况。
获取网络接口信息
net_if_addrs = psutil.net_if_addrs()
for interface, addrs in net_if_addrs.items():print(f"网络接口: {interface}")for addr in addrs:print(f" 地址: {addr.address}, 类型: {addr.family}")
获取网络流量统计信息
net_io_counters = psutil.net_io_counters()
print(f"发送的字节数: {net_io_counters.bytes_sent}")
print(f"接收的字节数: {net_io_counters.bytes_recv}")
6.获取进程信息
psutil 还提供了获取系统中运行的进程信息的能力。通过 psutil.process_iter() 可以遍历所有进程,查看进程的 CPU 和内存使用情况。
获取所有进程的基本信息
for proc in psutil.process_iter(['pid', 'name', 'username', 'cpu_percent', 'memory_percent']):print(f"进程ID: {proc.info['pid']}")print(f"进程名称: {proc.info['name']}")print(f"进程用户: {proc.info['username']}")print(f"CPU 使用率: {proc.info['cpu_percent']}%")print(f"内存使用率: {proc.info['memory_percent']}%")
7.监控系统资源并报警
我们可以结合 psutil 提供的资源监控功能,写一个简单的脚本来实时监控 CPU 和内存的使用情况,并在超出阈值时发送报警。
import psutil
import time# 设置阈值
cpu_threshold = 80
memory_threshold = 80while True:cpu_usage = psutil.cpu_percent(interval=1)memory_usage = psutil.virtual_memory().percentif cpu_usage > cpu_threshold:print(f"警告:CPU 使用率过高!当前使用率:{cpu_usage}%")if memory_usage > memory_threshold:print(f"警告:内存使用率过高!当前使用率:{memory_usage}%")time.sleep(5)
psutil 是一个非常强大的库,能够帮助我们获取系统的各种资源使用情况,无论是监控 CPU、内存、磁盘还是网络,psutil 都提供了方便的接口。
而且,它的跨平台特性使得它可以在 Windows、Linux 和 macOS 上使用。
通过结合 psutil,你可以编写出高效的系统监控脚本,帮助你进行系统管理和性能优化。