当前位置: 首页 > news >正文

使用 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,你可以编写出高效的系统监控脚本,帮助你进行系统管理和性能优化。

相关文章:

  • Apparent connection leak detected问题排查
  • Java Lombok @Data 注解用法详解
  • Reids 如何处理缓存穿透、缓存击穿、缓存雪崩问题?
  • 常用的Docker命令
  • 通用寄存器的 “不通用“ 陷阱:AX/CX/DX 的寻址禁区与突围之道
  • 代码训练LeetCode(22)研究者H指数
  • 防止网站被iframe嵌套的安全防护指南
  • 多线程编程技术解析及示例:pthread_cond_timedwait、pthread_mutex_lock 和 pthread_mutex_trylock
  • 数学知识体系难易程度表及关系
  • 蓝牙防丢器应用方案
  • 贝叶斯优化+LSTM+时序预测=Nature子刊!
  • Elasticsearch的写入性能优化
  • 高速ADC数据格式与JESD204B IP数据格式映射关系
  • FART 精准脱壳:通过配置文件控制脱壳节奏与范围
  • AI,如何重构理解、匹配与决策?
  • Oracle数据库笔记
  • [C]extern声明变量报错:undefined reference终极解决方案
  • 第五期书生大模型实战营-《L1G1-玩转书生大模型 API 之 Browser-Use 实践》
  • 若依Ruoyi中优先从本地文件加载静态资源
  • 理解网络协议
  • 免费一键生成短链接/重庆seo代理计费
  • 网站开发与设计作业/seo长尾关键词优化
  • 网站独立空间是什么意思/沈阳疫情最新消息
  • 想搭网站做软件首先要学设么/今日新闻摘抄十条简短
  • 国外网站开发发展历程/网站seo的方法
  • 手机如何打开wordpress/上海优化seo排名