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

告别任务管理器!用Python的psutil库打造你的专属系统监控面板(附完整代码)

用Python的psutil库构建高定制化系统监控面板每次卡顿就狂按CtrlAltDel的日子该结束了。作为开发者我们完全可以用Python打造一个比系统自带任务管理器更强大的监控工具——不仅能实时显示关键指标还能自定义告警规则、记录历史数据甚至集成到你的IDE或桌面环境中。这就是psutil库带给我们的可能性。1. 为什么需要自定义系统监控工具系统自带的资源管理器就像快餐店的固定套餐——它能解决基本需求但永远无法满足个性化要求。当你需要同时监控多个服务器的CPU负载或者在内存占用超过80%时自动触发清理脚本又或者想将监控数据可视化到仪表盘中原生工具就显得力不从心。psutilprocess and system utilities是Python生态中公认的系统监控神器。它用统一的API封装了跨平台的系统信息获取功能从CPU使用率到电池状态从磁盘IO到网络流量几乎所有你能想到的指标都能通过几行代码获取。更重要的是它让我们能够突破系统限制Windows任务管理器看不到每个CPU核心的详细负载Mac活动监视器无法记录历史数据psutil都能做到深度定制设置个性化的告警阈值定义自己的监控指标组合无缝集成将监控功能嵌入到你的自动化脚本、Web应用或桌面程序中2. 环境准备与核心功能速览2.1 快速搭建监控环境安装psutil只需要一条命令pip install psutil这个库从Python 2.6到3.10都完美支持在Windows、Linux和macOS上表现一致。对于需要监控远程服务器的场景可以结合paramiko等SSH库使用。2.2 核心监控指标一览psutil提供的监控能力可以归纳为这几大类类别关键指标典型应用场景CPU使用率、频率、核心数性能调优、负载均衡内存总量、使用量、交换空间内存泄漏检测、扩容规划磁盘容量、IOPS、读写速度存储优化、故障预警网络流量、连接数、带宽流量监控、安全审计传感器温度、风扇转速、电池硬件健康监测、节能管理3. 构建实时监控面板3.1 CPU监控超越任务管理器的细节系统自带工具通常只显示整体CPU使用率而开发者往往需要更细粒度的数据。以下代码展示了如何获取完整的CPU画像import psutil # 获取物理核心与逻辑线程数 print(f物理核心: {psutil.cpu_count(logicalFalse)}) print(f逻辑线程: {psutil.cpu_count()}) # 每个核心的实时频率 freq psutil.cpu_freq(percpuTrue) for i, core in enumerate(freq): print(fCore {i}: 当前 {core.current}MHz | 最低 {core.min}MHz | 最高 {core.max}MHz) # 每线程的使用率(间隔1秒) print(各线程负载:, psutil.cpu_percent(interval1, percpuTrue))在实际项目中我习惯将这些数据封装成一个CPU监控类加入历史数据记录功能class CPUMonitor: def __init__(self, history_size60): self.history deque(maxlenhistory_size) def update(self): usage psutil.cpu_percent(interval1, percpuFalse) self.history.append(usage) return usage def get_history(self): return list(self.history)3.2 内存监控发现隐形泄漏内存问题往往比CPU问题更难排查。psutil提供了比系统工具更专业的内存分析视角def memory_report(): mem psutil.virtual_memory() swap psutil.swap_memory() print(f物理内存: 已用 {mem.used/1e9:.2f}GB / 总量 {mem.total/1e9:.2f}GB ({mem.percent}%)) print(f可用内存: {mem.available/1e9:.2f}GB) print(f交换空间: 已用 {swap.used/1e9:.2f}GB / 总量 {swap.total/1e9:.2f}GB) if mem.percent 80: print(警告: 内存使用超过80%) # 这里可以添加自动清理逻辑提示在Linux系统上可用内存(available)的计算方式比free更准确它包含了可以被快速回收的缓存内存。3.3 磁盘监控不只是剩余空间磁盘监控需要关注的不仅仅是剩余容量。IO性能往往才是真正的瓶颈def disk_monitor(path/): usage psutil.disk_usage(path) io psutil.disk_io_counters() print(f磁盘 {path}:) print(f空间: 已用 {usage.used/1e9:.1f}GB / 总量 {usage.total/1e9:.1f}GB) print(fIO统计: 读 {io.read_bytes/1e6:.1f}MB | 写 {io.write_bytes/1e6:.1f}MB) print(fIOPS: 读 {io.read_count}次 | 写 {io.write_count}次) return usage.percent对于服务器监控我通常会扩展这个函数加入历史IOPS记录和异常波动检测。4. 高级功能从监控到自动化4.1 设置智能告警规则静态阈值告警太过原始。我们可以实现基于趋势的智能告警class SmartAlarm: def __init__(self, metric_func, window_size5, threshold0.2): self.metric_func metric_func self.values deque(maxlenwindow_size) self.threshold threshold def check(self): current self.metric_func() self.values.append(current) if len(self.values) self.values.maxlen: avg sum(self.values) / len(self.values) if abs(current - avg) avg * self.threshold: return True return False # 使用示例 cpu_alarm SmartAlarm(lambda: psutil.cpu_percent(interval1)) if cpu_alarm.check(): print(CPU使用率出现异常波动)4.2 数据可视化集成将监控数据可视化能极大提升可读性。以下是使用Matplotlib创建实时图表的示例import matplotlib.pyplot as plt from matplotlib.animation import FuncAnimation def live_cpu_plot(): fig, ax plt.subplots() xdata, ydata [], [] ln, ax.plot([], [], r-) def init(): ax.set_xlim(0, 60) ax.set_ylim(0, 100) return ln, def update(frame): xdata.append(frame) ydata.append(psutil.cpu_percent()) ln.set_data(xdata[-60:], ydata[-60:]) return ln, ani FuncAnimation(fig, update, framesrange(100), init_funcinit, blitTrue) plt.show()4.3 打造桌面小部件使用PyQt5或Tkinter你可以将监控面板嵌入到桌面环境中from PyQt5.QtWidgets import QApplication, QLabel, QVBoxLayout, QWidget import sys class MonitorWidget(QWidget): def __init__(self): super().__init__() self.setWindowTitle(系统监控) self.layout QVBoxLayout() self.cpu_label QLabel(CPU: 0%) self.mem_label QLabel(内存: 0%) self.layout.addWidget(self.cpu_label) self.layout.addWidget(self.mem_label) self.setLayout(self.layout) self.timer QTimer() self.timer.timeout.connect(self.update_stats) self.timer.start(1000) def update_stats(self): self.cpu_label.setText(fCPU: {psutil.cpu_percent()}%) mem psutil.virtual_memory() self.mem_label.setText(f内存: {mem.percent}%) app QApplication(sys.argv) widget MonitorWidget() widget.show() sys.exit(app.exec_())5. 性能优化与生产环境实践在长期运行监控脚本时我发现几个关键优化点采样频率非关键指标不要高频采集CPU使用率1秒一次足够而温度可以10秒一次数据聚合原始数据占用空间大应该定期聚合如1分钟精度保留7天1小时精度保留1年异常处理网络磁盘断开、传感器不可用等情况要妥善处理一个生产级的监控类应该像这样结构class ProductionMonitor: def __init__(self): self.cpu CPUMonitor() self.memory_history [] self.disk_history [] def run(self): try: while True: self._update_cpu() self._update_memory() self._update_disk() time.sleep(1) except KeyboardInterrupt: self._save_report() def _update_cpu(self): usage self.cpu.update() if usage 90: self._trigger_alert(CPU超过90%) def _update_memory(self): mem psutil.virtual_memory() self.memory_history.append(mem.percent) if len(self.memory_history) 3600: # 保留1小时数据 self.memory_history.pop(0) def _update_disk(self): # 类似实现... pass def _trigger_alert(self, message): # 实现告警逻辑如发邮件、发短信等 print(f[ALERT] {message}) def _save_report(self): # 保存监控数据到文件 with open(monitor_report.json, w) as f: json.dump({ cpu: self.cpu.get_history(), memory: self.memory_history }, f)在多个项目中使用psutil后我最欣赏的是它的稳定性和一致性——无论底层系统如何变化API始终保持统一。对于需要长期运行的后台监控服务建议结合logging模块记录运行日志并使用supervisor等工具保证进程存活。

相关文章:

告别任务管理器!用Python的psutil库打造你的专属系统监控面板(附完整代码)

用Python的psutil库构建高定制化系统监控面板 每次卡顿就狂按CtrlAltDel的日子该结束了。作为开发者,我们完全可以用Python打造一个比系统自带任务管理器更强大的监控工具——不仅能实时显示关键指标,还能自定义告警规则、记录历史数据,甚至集…...

CANNBot Simulator V2参考文档

Simulator V2 Reference 【免费下载链接】cannbot-skills CANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体,本仓库为其提供可复用的 Skills 模块。 项目地址: https://gitcode.com/cann/cannbot-skills Read this file when the question is specif…...

AI技术扩散六十年全景:从计算机科学到98%研究领域的渗透轨迹

1. 项目概述:一次跨越六十年的AI技术扩散全景扫描 如果你和我一样,长期关注人工智能领域的发展,可能会有一个直观的感受:AI似乎无处不在。从实验室里的蛋白质结构预测,到社交媒体上的内容推荐,再到艺术创作…...

GWAI平台:AI赋能引力波数据分析,从数据生成到模型评估的全栈解决方案

1. GWAI平台:引力波数据分析的AI新范式引力波,这个百年前由爱因斯坦广义相对论预言的时空涟漪,自2015年被LIGO首次直接探测以来,彻底改变了我们观测宇宙的方式。它让我们“听”到了黑洞并合、中子星碰撞等宇宙中最狂暴的事件。然而…...

Cursor-Office:AI驱动办公文档自动化处理插件深度解析

1. 项目概述与核心价值 最近在GitHub上看到一个挺有意思的项目,叫 Isaacpixier/cursor-office 。光看这个名字,你可能会有点摸不着头脑, cursor 是那个AI驱动的代码编辑器, office 是办公套件,这俩放一块儿能搞出…...

CANN HIXL Agent工作指引

AGENTS.md 【免费下载链接】hixl HIXL(Huawei Xfer Library)是一个灵活、高效的昇腾单边通信库,面向集群场景提供简单、可靠、高效的点对点数据传输能力。 项目地址: https://gitcode.com/cann/hixl 本文件为 Agent 在本仓库中工作提供…...

从CC2530F256到.hex:IAR工程配置中那些新手必踩的坑与避坑指南

从CC2530F256到.hex:IAR工程配置中那些新手必踩的坑与避坑指南 当你第一次在IAR Embedded Workbench中为CC2530F256创建工程时,可能会觉得整个过程就像在迷宫中穿行。特别是当教程只告诉你"点击这里"、"选择那个",却不解…...

AI赋能卫星通信:智能波束跳变与抗干扰技术深度解析

1. 项目概述:当AI遇见卫星通信的“矛”与“盾”最近和几个做卫星通信的老朋友聊天,大家不约而同地都在讨论同一个话题:AI。这让我想起十年前,我们还在为如何稳定地让卫星天线对准一颗高速移动的低轨卫星而绞尽脑汁,如今…...

Nodejs后端如何为在线服务集成多模型AI能力

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Node.js 后端如何为在线服务集成多模型 AI 能力 现代 Web 应用的后端服务,尤其是基于 Node.js 构建的,经常…...

对比直连厂商Taotoken在多模型聚合与统一计费上的便捷体验

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 对比直连厂商与Taotoken在多模型聚合与统一计费上的便捷体验 效果展示类,从开发者实际体验出发,叙述同时使…...

从原理到代码:手撕Matlab畸变矫正算法,彻底搞懂内参矩阵与径向畸变参数

从归一化坐标到像素映射:Matlab畸变矫正算法的数学本质与工程实现 在计算机视觉领域,相机镜头畸变矫正是一个看似简单却蕴含丰富数学原理的基础问题。许多开发者习惯直接调用OpenCV或Matlab的现成函数,却对背后的坐标变换体系一知半解。本文…...

可解释AI的对抗攻击与防御:从SHAP/LIME脆弱性到鲁棒性实践

1. 项目概述:当AI的“黑箱”遭遇“压力测试”在AI模型日益渗透到信贷审批、医疗诊断、司法辅助等关键决策领域的今天,一个核心的信任危机始终悬而未决:我们如何相信一个自己都无法完全理解的“黑箱”系统?可解释人工智能&#xff…...

FastDeploy全场景AI推理部署:从模型转换到多硬件平台实战

1. 项目概述:从“能用”到“好用”的AI部署桥梁 如果你在AI工程化的路上摸爬滚打过一阵子,大概率会和我有同样的感受:把一个在实验室里跑得飞快的模型,真正搬到生产环境里稳定、高效地跑起来,这中间的鸿沟,…...

物流人必看:除了EIQ,你的WMS系统真的用对了吗?结合ABC分类优化库位与拣货路径实战

物流人必看:除了EIQ,你的WMS系统真的用对了吗?结合ABC分类优化库位与拣货路径实战 仓库管理系统(WMS)作为现代物流的核心工具,其价值远不止于简单的库存记录和出入库管理。真正高效的WMS应当是一个能够动态…...

基于ChatGPT的浏览器扩展开发指南:从原理到实战

1. 项目概述:一个浏览器扩展的诞生与价值 最近在折腾一些自动化流程,发现很多重复性的网页操作,比如批量整理信息、自动填写表单,或者是在浏览技术文档时快速提取代码片段,手动操作起来既繁琐又容易出错。作为一个习惯…...

保姆级教程:H3C NX30 PRO刷OpenWrt后,用Cron定时任务搞定烦人的LED灯

智能路由器灯光管理:OpenWrt定时任务实战指南 深夜的书房里,路由器LED指示灯像个小太阳一样刺眼。这种困扰对于追求完美使用体验的技术爱好者来说,简直不能忍。好在OpenWrt系统的强大自定义能力可以轻松解决这个问题——不需要复杂的命令行操…...

告别固定类别!用YOLO-World v2模型,5分钟实现自定义物体检测(附Python代码)

5分钟定制专属AI检测器:YOLO-World v2实战指南 去年帮朋友改造智能花房时,遇到个头疼的问题——市面上现成的物体检测模型根本识别不出他那些稀有兰花品种。正当我准备动手标注上千张图片重新训练模型时,偶然发现了YOLO-World这个"变形…...

Python proxypal库:代理协议适配与智能调度实战指南

1. 项目概述与核心价值 最近在折腾一些需要处理网络代理的自动化脚本时,发现了一个挺有意思的Python库,叫 proxypal 。乍一看名字,你可能会觉得它又是一个简单的代理IP池管理工具,市面上这类工具已经多如牛毛了。但实际用下来&a…...

基于OpenClaw框架的Asana自动化集成:打破数据孤岛,构建事件驱动工作流

1. 项目概述:一个连接Asana与本地工作流的自动化桥梁 最近在折腾自动化工作流,发现很多团队的核心任务管理都放在Asana上,但一些本地化的脚本、数据处理或者内部系统的触发,却很难和Asana无缝联动。手动在两个系统间同步状态、复制…...

如何像专业人士一样删除Android上的游戏数据

有时,您可能出于各种原因想要删除Android手机上的游戏数据。您可能想要重新开始游戏、修复性能问题(例如卡顿或崩溃),或者只是为了释放存储空间。随着游戏数据的积累,它们会占用大量空间,从而导致手机运行缓…...

CANN/cann-bench MoeReRouting算子API描述

MoeReRouting 算子 API 描述 【免费下载链接】cann-bench 评测AI在处理CANN领域代码任务的能力,涵盖算子生成、算子优化等领域,支撑模型选型、训练效果评估,统一量化评估标准,识别Agent能力短板,构建CANN领域评测平台&…...

基于零知识证明与Cardano的隐私优先AI赏金池系统NightPay实战指南

1. 项目概述:一个为AI智能体设计的隐私优先赏金池系统如果你正在寻找一种既能激励AI智能体完成特定任务,又能完全保护资金提供者隐私的解决方案,那么NightPay很可能就是你需要的工具。简单来说,NightPay是一个建立在Midnight隐私网…...

MAX3420E USB控制器开发实战与优化技巧

1. MAX3420E USB控制器概述 MAX3420E是一款全速USB外设控制器芯片,广泛应用于嵌入式系统开发中。作为USB协议栈的硬件实现载体,它通过SPI接口与主控MCU通信,减轻了主控处理USB协议的压力。芯片内部集成了USB串行接口引擎(SIE)、端点FIFO缓冲区…...

CANN/ops-nn Gelu激活函数算子

Gelu 【免费下载链接】ops-nn 本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。 项目地址: https://gitcode.com/cann/ops-nn 产品支持情况 产品是否支持Ascend 950PR/Ascend 950DT√Atlas A3 训练系列产品/Atlas A3 推理系列产品√Atlas…...

大语言模型在仇恨言论检测中的实践:从零样本提示到系统部署

1. 项目概述:当大语言模型成为“网络清道夫”在互联网内容生态治理的战场上,自动化检测系统一直是核心防线。传统的基于规则或传统机器学习的方法,往往在语言的微妙性、语境依赖性和快速演变的网络用语面前捉襟见肘。仇恨言论的检测尤其棘手&…...

蓝桥杯嵌入式STM32G431按键实战:从CubeMX配置到长按短按识别(附完整代码)

蓝桥杯嵌入式STM32G431按键实战:从CubeMX配置到长按短按识别(附完整代码) 在嵌入式系统开发中,按键处理看似简单,实则暗藏玄机。一个健壮的按键模块需要解决抖动干扰、长短按识别、多任务协调等问题,这正是…...

深度解析:DeepSeek集成项目的微服务架构与配置管理最佳实践

深度解析:DeepSeek集成项目的微服务架构与配置管理最佳实践 【免费下载链接】awesome-deepseek-integration Integrate the DeepSeek API into popular software 项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-deepseek-integration 在AI应用快…...

金融监管AI实战:从模型部署到风险管理的挑战与应对

1. 项目概述:当AI遇见金融监管的“深水区”最近几年,和不少在银行、券商和监管科技公司工作的朋友聊天,一个绕不开的话题就是AI。大家聊的已经不是“要不要用”,而是“怎么用”和“用起来有多头疼”。从反洗钱(AML&…...

解锁车辆新姿势:从PEPS解锁看AUTOSAR局部网络管理(Partial NM)如何省电

解锁车辆新姿势:从PEPS解锁看AUTOSAR局部网络管理如何省电 当车主在停车场按下智能钥匙的解锁按钮时,车辆不会像传统机械钥匙那样全车通电——只有门锁控制器和车身控制模块(BCM)被悄然唤醒,而仪表盘、中控屏等系统仍在…...

HCOMM获取拓扑层级rank数量

HcclRankGraphGetRankSizeByLayer 【免费下载链接】hcomm HCOMM(Huawei Communication)是HCCL的通信基础库,提供通信域以及通信资源的管理能力。 项目地址: https://gitcode.com/cann/hcomm 产品支持情况 Ascend 950PR/Ascend 950DT&…...