专业接各种小工具软件及爬虫软件开发,联系Q:2391047879

简易系统资源监控工具(psutil库实现)

发布时间: 2025-06-24 15:36:01 浏览量: 本文共包含768个文字,预计阅读时间2分钟

资源监控是程序性能优化的重要环节。Python生态中的psutil库凭借跨平台特性与简洁API设计,成为开发轻量级监控工具的首选方案。该库支持获取CPU、内存、磁盘、网络等核心指标的实时数据。

CPU占用率追踪

```python

import psutil

cpu_percent = psutil.cpu_percent(interval=1, percpu=True)

print(f"核心数量:{len(cpu_percent)}")

print("各核心利用率:", ["%.1f%%" % x for x in cpu_percent])

```

interval参数控制采样间隔,设置为1秒可避免单次瞬时采样造成的误差。percpu=True返回每个逻辑核心的独立数据,在多核处理器场景下更易定位负载不均衡问题。

内存使用分析

```python

mem = psutil.virtual_memory

swap = psutil.swap_memory

print(f"物理内存占用率:{mem.percent}%")

print(f"交换分区使用量:{swap.used//10242}MB")

```

virtual_memory返回对象包含total/available/used等属性,建议重点关注percent属性避免绝对值计算。swap_usage在服务器监控中尤为重要,异常增长可能预示内存泄漏。

磁盘IO监控

```python

disk_before = psutil.disk_io_counters

time.sleep(2)

disk_after = psutil.disk_io_counters

read_speed = (disk_after.read_bytes

  • disk_before.read_bytes) / 2
  • write_speed = (disk_after.write_bytes

  • disk_before.write_bytes) / 2
  • print(f"磁盘读取速度:{read_speed//1024}KB/s")

    print(f"写入速度:{write_speed//1024}KB/s")

    ```

    通过两次采样计算差值获取IO速率,采样间隔建议设置在1-5秒。SSD设备可适当缩短间隔,机械硬盘过高的采样频率可能影响准确性。

    网络流量统计

    ```python

    net_before = _io_counters

    time.sleep(3)

    net_after = _io_counters

    sent_speed = (net_after.bytes_sent

  • net_before.bytes_sent) / 3
  • recv_speed = (net_after.bytes_recv

  • net_before.bytes_recv) / 3
  • print(f"上传速率:{sent_speed//1024}KB/s")

    print(f"下载速率:{recv_speed//1024}KB/s")

    ```

    bytes_sent/bytes_recv分别对应上行/下行累计字节数。监控公网流量时可结合_connections过滤本地流量,提升统计精准度。

    数据可视化方面可集成matplotlib绘制实时折线图,长时间监控建议设置数据存储模块。Windows平台部署时需注意管理员权限获取问题,Linux环境下/proc文件系统的访问权限可能影响部分指标采集。异常处理模块应包含PermissionError捕获与重试机制,确保监控进程持续运行。