Python 主机状态监控模块:psutil

2017/06/05 15:49 pm posted in  Python 黑魔法

这几天毕设需要加一个主机监控的功能,然后发现了一个 python 的跨平台的主机监控模块:psutil。

文档: https://pythonhosted.org/psutil/

Github: https://github.com/giampaolo/psutil

安装

pip install psutil

常用功能

因为毕设中只用到了 CPU,内存,磁盘这三个属性,但是这个库能获得的状态不止这些,还有网络,传感器和各种系统属性。只写下自己用到的,其他的文档介绍的挺全面。

CPU

psutil.cpu_times(percpu=False)

cpu_times 函数接受一个参数,percpu,默认为 False。

>>> psutil.cpu_times()
scputimes(user=33335.82, nice=0.0, system=35253.52, idle=405130.12)

执行之后将返回 user mode 和 kernel mode 的 CPU 时间(user,system),以及 CPU 空转的时间(idle)。

如果加上 percpu 参数,之后,将返回每个核心的信息:

>>> psutil.cpu_times(percpu=True)
[scputimes(user=12113.43, nice=0.0, system=14012.23, idle=92520.62), scputimes(user=4881.28, nice=0.0, system=4959.2, idle=108794.75), scputimes(user=11446.36, nice=0.0, system=11263.96, idle=95924.97), scputimes(user=4969.93, nice=0.0, system=5093.61, idle=108571.62)]

如果只是计算 CPU 的利用率的话,psutil.cpu_percent() 就够解决问题,cpu_percent 可以传递一个间隔参数,来计算一定间隔内的 CPU 利用率:

>>> psutil.cpu_percent(1)
13.7

内存

因为我只需要计算内存的使用率,所以只用到了 virtual_memory 方法。这个方法返回的参数很多,不过也是一目了然。

>>> psutil.virtual_memory()
svmem(total=17179869184L, available=4261830656L, percent=75.2, used=13366374400L, free=2298265600L, active=9087324160L, inactive=1963565056L, wired=2315485184L)

磁盘

disk_partitions 方法可以查看磁盘的使用情况,会返回一个 list,包含了比较全面的信息:

>>> psutil.disk_partitions()
[sdiskpart(device='/dev/disk1', mountpoint='/', fstype='hfs', opts='rw,local,rootfs,dovolfs,journaled,multilabel'), sdiskpart(device='/dev/disk0s3', mountpoint='/Volumes/Recovery HD', fstype='hfs', opts='rw,local,dovolfs,dontbrowse,journaled,multilabel')]

当然,以上只是提到了最简单的功能,还有很多使用的函数可以选择。