Python标准库:psutil 轻松获取各种系统信息!
今天介绍的是psutil
模块,它是一个跨平台库(https://github.com/giampaolo/psutil)。
命令行下通过pip安装:
pip install psutil
如果跟我一样安装的是Anaconda,则剩下这步了,因为自带了。
顾名思义,psutil = process and system utilities
,它专门用来获取操作系统以及硬件相关的信息,比如:CPU、内存、磁盘、网络、进程管理等。
![](https://filescdn.proginn.com/80e9d8d65768b33665089457afe9baea/0cdabcef96de8f599361cf906bcf24b2.webp)
今天这篇文章,就来给大家介绍一下其常用功能和使用方法。
查询CPU信息
先导入psutil
模块,获取CPU的信息数据。
import psutil
# CPU逻辑数量
psutil.cpu_count()
# CPU物理核心
psutil.cpu_count(logical=False)
# 统计CPU的用户/系统/空闲时间
psutil.cpu_times()
# interval:每隔0.5s刷新一次
# percpu:查看所有的cpu使用率
for x in range(5):
print(psutil.cpu_percent(interval=0.5, percpu=True))
输出结果:
![](https://filescdn.proginn.com/83149db46157926477ff3fd3dec09985/5b2fefa1d6ba7f4096b418529ed59193.webp)
注:大家如果对jupyter notebook 同时输出多个变量感兴趣,可以查看这篇文章《Jupyter Notebook使用技巧:轻松输出多个变量》
查询内存信息
输出内存使用情况(总内存、可用内存、内存使用率、已使用内存)。
psutil.virtual_memory()
![](https://filescdn.proginn.com/e86c5d6986f316d5db41267eba5dd0fd/ad8755c48211f40f7827a20198fd7cdb.webp)
比如上面输出的total=16499146752
即为总内存16G,已使用内存/总内存= 76.0%(内存使用率)。
查询磁盘信息
可以通过psutil获取磁盘分区、磁盘使用率和磁盘IO信息。
# 磁盘分区信息
psutil.disk_partitions()
# 磁盘使用情况
psutil.disk_usage('/')
# 磁盘IO
psutil.disk_io_counters()
![](https://filescdn.proginn.com/4c1b9f6be0b5e0c39e0cbef56254f2ce/f63b4f26a04435407453ccdf3258fabc.webp)
其中,返回的IO信息指标有👉
磁盘IO信息read_count(读IO数)、write_count(写IO数)、read_bytes(IO写字节数)、read_time(磁盘读时间)、write_time(磁盘写时间)。
查询网络信息
使用psutil
库查询网络读写字节/包的个数。
psutil.net_io_counters()
![](https://filescdn.proginn.com/e988a22137a5e2b4755aed128378e5d3/0063b38f8a5d9666ea8f4e7aefbf3f23.webp)
其中,返回的数据指标有👉
btes_sent: 发送的字节数 bytes_recv: 接收的字节数 packets_sent: 发送的包数据量 packets_recv: 接收的包数据量 errin: 接收包时, 出错的次数 errout: 发送包时, 出错的次数 dropin: 接收包时, 丢弃的次数 dropout: 发送包时, 丢弃的次数
除此以外,还有很多获取网络接口和网络连接信息的函数。
比如用psutil.net_if_addrs()
获取网络接口信息,用psutil.net_if_stats()
获取网络接口状态等。
查询进程信息
最后,使用psutil
模块也能获取所有进程的详细信息数据!
psutil.pids() # 所有进程ID
![](https://filescdn.proginn.com/a701059a01b5f6dc0732ee1e379d7466/bc9e7ad8e629ff8c53fb0c4b3a2cd642.webp)
返回的结果包括了所有进程的ID(pid)。
根据 pid 可以获取一个进程对应的 Process 对象,而这个对象里面包含了该进程的全部数据。
下面我们指定进程ID=113408,其实就是当前Python交互环境,来获取该进程的信息。
# 获取指定进程ID=113408,其实就是当前Python交互环境
p = psutil.Process(113408)
# 进程名称
p.name()
# 进程的exe路径
p.exe()
# 进程的工作目录
p.cwd()
# 进程启动的命令行
p.cmdline()
# 当前进程id
p.pid
![](https://filescdn.proginn.com/1d01a8671c3ef20165f13c228dd71fd1/ce7b58b3ba87e045bb7b5da035152dbf.webp)
总而言之,psutil
使得我们可以轻松用Python程序获取各类系统信息。
本文只介绍了该模块的安装和基本使用方法,后续大家想了解更多详情,可以参考psutil的官网:https://github.com/giampaolo/psutil
我们的文章到此就结束啦,如果你喜欢今天的Python 实战教程,请持续关注Python实用宝典。
有任何问题,可以在公众号后台回复:加群,回答相应红字验证信息,进入互助群询问。
原创不易,希望你能在下面点个赞和在看支持我继续创作,谢谢!
点击下方阅读原文可获得更好的阅读体验
Python实用宝典 (pythondict.com)
不只是一个宝典
欢迎关注公众号:Python实用宝典