psutil:一个跨平台的 Python 库,从进程、CPU、内存、硬盘、网络,到风扇温度、电池续航,都能用统一的 API 拿到
最近在搞一个运维监控的小工具,老想知道 CPU、内存、磁盘、网络的实时情况,结果翻来翻去发现 Python 居然有个超强的利器——psutil。今天就跟你唠唠它到底什么来头,能解决哪些痛点,顺便奉上干货代码、优缺点全方位对比,让你秒变运维小能手。
什么是 psutil?psutil,全称 Process and System Utilities,是一个跨平台的 Python 库。简单来说,它把 UNIX 下的 ps、top、free、netstat、iostat、lsof……这一大堆命令行工具的功能都给你搬进来 Python 里了。支持 Linux、Windows、macOS、各种 BSD、Solaris、AIX 等主流系统,Python3.6+、PyPy 随便跑。
它帮你解决了啥痛点?
- • 实时监控:想知道 CPU 用了多少?一行代码搞定。
- • 进程管理:批量查进程、杀掉僵尸、调整优先级都能做。
- • 无侵入:不需要额外安装系统监控软件,全靠一个 pip 包。
- • 跨平台:开发一次,Linux/Windows/Mac 都能用,不用担心命令行差异。
干货:代码实例下面演示几个最常见的场景,保准你分分钟上手:
import psutil, time# 1. CPU 利用率print("CPU 总使用率:", psutil.cpu_percent(interval=1),"%")print("每个核:", psutil.cpu_percent(interval=1, percpu=True))# 2. 内存状况mem = psutil.virtual_memory()print(f"总内存 {mem.total/1e9:.2f} GB,已用 {mem.used/1e9:.2f} GB,空闲 {mem.available/1e9:.2f} GB")# 3. 磁盘 IOio1 = psutil.disk_io_counters()time.sleep(1)io2 = psutil.disk_io_counters()print("1 秒内读写:",(io2.read_bytes-io1.read_bytes)/1024,"KB 读|",(io2.write_bytes-io1.write_bytes)/1024,"KB 写")# 4. 网络流量net1 = psutil.net_io_counters()time.sleep(1)net2 = psutil.net_io_counters()print("1 秒内发包:",(net2.bytes_sent-net1.bytes_sent)/1024,"KB | 收包:",(net2.bytes_recv-net1.bytes_recv)/1024,"KB")
优缺点一览
| |
| 部分高级功能只在 Linux/Windows 上可用 |
| |
| |
| |
深度总结我自己用下来,psutil 最大的魅力在于「一站式」:从进程、CPU、内存、硬盘、网络,到风扇温度、电池续航,每个指标都能用统一的 API 拿到。要做自动化监控、性能剖析、资源限制……都能胜任。唯一要注意的是,写脚本时最好避免高频短时 psutil.cpu_percent(interval=0) 这种写法,改成定时采样,否则容易把监控本身的开销也算进去。
总之,如果你也在做运维监控、性能分析,或者想在业务代码里「随手查一下」系统状态,强烈推荐你把 psutil 收进工具箱。再找个简单的可视化界面,就能秒出监控大盘,绝对比贴命令到 cron 里方便多了。
项目地址:https/github.com/giampaolo/psutil