在开发应用程序或进行系统管理时,我们常常需要获取系统的资源使用情况,比如CPU、内存、磁盘等的利用率,Python提供了一个非常强大的库 psutil,可以帮助开发者轻松地获取这些信息。本文将介绍psutil库的基本使用方法,并展示如何用它来监控系统资源。1.安装psutil库
首先,我们需要安装 psutil 库。可以通过 pip 来安装:
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}%")
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 psutilimport time# 设置阈值cpu_threshold = 80memory_threshold = 80while True: cpu_usage = psutil.cpu_percent(interval=1) memory_usage = psutil.virtual_memory().percent if 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 上使用。