news 2026/4/20 21:31:57

Pixel Language Portal 系统资源监控面板开发:Python实现类任务管理器功能

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Pixel Language Portal 系统资源监控面板开发:Python实现类任务管理器功能

Pixel Language Portal 系统资源监控面板开发:Python实现类任务管理器功能

1. 引言:为什么需要轻量级系统监控工具

在日常服务器运维工作中,系统资源监控是必不可少的一环。想象一下这样的场景:你的服务器突然响应变慢,C盘空间告急,但你却不知道具体是哪个进程占用了资源。这时候,一个轻量级的系统监控工具就能派上大用场。

传统的任务管理器功能有限,而专业监控系统又过于笨重。本文将介绍如何使用Python开发一个类似任务管理器的系统资源监控面板,能够实时监控CPU、内存、磁盘IO和网络流量等关键指标,并通过终端或Web界面直观展示数据。

2. 核心监控指标与实现思路

2.1 需要监控的关键系统指标

一个完善的系统监控工具应该关注以下几个核心指标:

  • CPU使用率:监控整体和各核心的负载情况
  • 内存使用:包括物理内存和虚拟内存的使用情况
  • 磁盘活动:特别是C盘空间使用率和IO读写速度
  • 网络流量:监控上传下载速度和连接状态

2.2 技术选型与实现方案

我们将使用Python的几个强大库来实现这些功能:

  • psutil:跨平台系统信息库,可以轻松获取系统资源使用情况
  • rich:终端美化库,用于在命令行界面创建漂亮的监控面板
  • socket:用于获取网络相关信息
  • fastapi(可选):如果需要Web界面,可以用它快速搭建API

3. 基础监控功能实现

3.1 安装必要的Python库

首先确保安装了所需的库:

pip install psutil rich

如果需要Web界面,可以额外安装:

pip install fastapi uvicorn

3.2 CPU和内存监控实现

让我们从最基础的CPU和内存监控开始:

import psutil import time def get_system_stats(): # 获取CPU使用率 cpu_percent = psutil.cpu_percent(interval=1) # 获取内存信息 mem = psutil.virtual_memory() return { "cpu": cpu_percent, "memory": { "total": mem.total, "available": mem.available, "used": mem.used, "percent": mem.percent } } while True: stats = get_system_stats() print(f"CPU使用率: {stats['cpu']}%") print(f"内存使用: {stats['memory']['percent']}%") time.sleep(2)

3.3 磁盘监控实现

针对"C盘满了怎么清理"这个常见问题,我们可以特别关注磁盘空间:

def get_disk_info(): partitions = psutil.disk_partitions() disk_info = {} for partition in partitions: if 'C:' in partition.mountpoint: usage = psutil.disk_usage(partition.mountpoint) disk_info[partition.mountpoint] = { "total": usage.total, "used": usage.used, "free": usage.free, "percent": usage.percent } return disk_info disk_stats = get_disk_info() for drive, stats in disk_stats.items(): print(f"{drive} 使用情况: {stats['percent']}% (已用 {stats['used']/1024/1024/1024:.2f}GB)")

4. 高级功能实现

4.1 网络流量监控

网络监控可以帮助我们了解服务器的通信状况:

def get_network_info(): net_io = psutil.net_io_counters() return { "bytes_sent": net_io.bytes_sent, "bytes_recv": net_io.bytes_recv, "packets_sent": net_io.packets_sent, "packets_recv": net_io.packets_recv } # 获取两次网络数据计算流量 net1 = get_network_info() time.sleep(1) net2 = get_network_info() upload_speed = (net2['bytes_sent'] - net1['bytes_sent']) / 1024 # KB/s download_speed = (net2['bytes_recv'] - net1['bytes_recv']) / 1024 # KB/s print(f"上传速度: {upload_speed:.2f} KB/s") print(f"下载速度: {download_speed:.2f} KB/s")

4.2 使用Rich库创建终端监控面板

Rich库可以让我们的监控面板更加美观:

from rich.console import Console from rich.table import Table from rich.live import Live import psutil def generate_monitor_table(): table = Table(title="系统资源监控面板") table.add_column("指标") table.add_column("当前值") table.add_column("状态") # CPU信息 cpu_percent = psutil.cpu_percent() table.add_row("CPU使用率", f"{cpu_percent}%", "[red]警告" if cpu_percent > 80 else "[green]正常") # 内存信息 mem = psutil.virtual_memory() table.add_row("内存使用", f"{mem.percent}%", "[red]警告" if mem.percent > 80 else "[green]正常") # 磁盘信息 disk = psutil.disk_usage('C:') table.add_row("C盘空间", f"{disk.percent}%", "[red]警告" if disk.percent > 85 else "[green]正常") return table console = Console() with Live(console=console, refresh_per_second=4) as live: while True: live.update(generate_monitor_table()) time.sleep(0.25)

5. 实际应用与扩展

5.1 针对C盘空间不足的解决方案

当监控到C盘空间不足时,我们可以扩展功能自动找出大文件:

import os def find_large_files(directory, size_threshold=100): """查找大于指定大小(MB)的文件""" large_files = [] for root, dirs, files in os.walk(directory): for file in files: file_path = os.path.join(root, file) try: file_size = os.path.getsize(file_path) / 1024 / 1024 # MB if file_size > size_threshold: large_files.append((file_path, file_size)) except: continue return sorted(large_files, key=lambda x: x[1], reverse=True) # 查找C盘中大于100MB的文件 large_files = find_large_files('C:\\') for file, size in large_files[:10]: # 显示前10个大文件 print(f"{file} - {size:.2f} MB")

5.2 Web监控面板实现(可选)

如果需要远程监控,可以使用FastAPI创建简单的Web界面:

from fastapi import FastAPI from fastapi.responses import HTMLResponse import psutil app = FastAPI() def get_system_html(): cpu = psutil.cpu_percent() mem = psutil.virtual_memory() disk = psutil.disk_usage('C:') return f""" <html> <body> <h1>系统监控面板</h1> <p>CPU使用率: {cpu}%</p> <p>内存使用: {mem.percent}%</p> <p>C盘空间: {disk.percent}%</p> </body> </html> """ @app.get("/", response_class=HTMLResponse) async def monitor(): return get_system_html()

启动服务后,访问http://localhost:8000即可查看监控数据。

6. 总结

通过这个项目,我们实现了一个轻量级的系统资源监控工具,能够实时监控CPU、内存、磁盘和网络等关键指标。相比Windows自带的任务管理器,我们的工具更加灵活,可以根据需要扩展功能,比如针对"C盘满了怎么清理"这样的常见问题提供解决方案。

实际使用中,你可以根据自己的需求调整监控频率、添加更多指标,或者改进可视化效果。这个工具特别适合服务器运维人员使用,可以帮助快速定位系统资源瓶颈,及时发现问题并解决。

整体开发下来,Python的psutil库确实非常强大,配合rich库可以轻松创建漂亮的终端界面。如果你需要更复杂的功能,还可以考虑添加告警机制、历史数据存储和分析等功能,让这个监控工具更加完善。


获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/20 21:27:33

用虚拟机克隆大法,30分钟搞定Hadoop 3.1.3全分布式环境(Ubuntu 18.04版)

虚拟机克隆技术快速部署Hadoop集群实战指南 在当今数据驱动的时代&#xff0c;掌握大数据技术已成为工程师的必备技能。而Hadoop作为大数据生态系统的基石&#xff0c;其集群环境的搭建往往是学习与实践的第一步。传统的手动逐台配置方式不仅耗时费力&#xff0c;还容易因操作不…

作者头像 李华
网站建设 2026/4/20 21:26:24

容器化部署详解

容器化部署详解 本章导读 容器化技术彻底改变了软件交付的方式,让"一次构建,到处运行"成为现实。本章深入讲解Docker容器化的核心原理与实践技巧,帮助读者掌握从Dockerfile编写到生产级部署的完整流程,彻底解决环境不一致、部署效率低、资源利用差等痛点问题。 学…

作者头像 李华