1.模块简介
psutil是一个跨平台库(http://code.google.com/p/psutil/),能够轻 松实现获取系统运行的进程和系统利用率(包括CPU、内存、磁盘、网 络等)信息。它主要应用于系统监控,分析和限制系统资源及进程的管 理。它实现了同等命令行工具提供的功能,如ps、top、lsof、netstat、 ifconfig、who、df、kill、free、nice、ionice、iostat、iotop、uptime、 pidof、tty、taskset、pmap等。目前支持32位和64位的Linux、 Windows、OS X、FreeBSD和Sun Solaris等操作系统,支持从2.4到3.4的 Python版本,目前最新版本为2.0.0。
通常我们获取操作系统信息往往采 用编写shell来实现,如获取当前物理内存总大小及已使用大小,shell命 令如下:
相比较而言,使用psutil库实现则更加简单明了。psutil大小单位一 般都采用字节,如下:
2.获取系统性能信息
采集系统的基本性能信息包括CPU、内存、磁盘、网络等,可以 完整描述当前系统的运行状态及质量。psutil模块已经封装了这些方法, 用户可以根据自身的应用场景,调用相应的方法来满足需求,非常简单 实用。
(1)CPU信息 Linux操作系统的CPU利用率有以下几个部分: ·
User Time,执行用户进程的时间百分比; ·
System Time,执行内核进程和中断的时间百分比; ·
Wait IO,由于IO等待而使CPU处于idle(空闲)状态的时间百分 比; ·
Idle,CPU处于idle状态的时间百分比。
我们使用Python的psutil.cpu_times()方法可以非常简单地得到这 些信息,同时也可以获取CPU的硬件相关信息,比如CPU的物理个数与 逻辑个数,具体见下面的操作例子:
获取全部cpu信息
>>>psutil.cpu_times()
scputimes(user=55.56, nice=0.0, system=28.83, idle=2811.87, iowait=71.64, irq=0.0, softirq=0.4, steal=0.0, guest=0.0, guest_nice=0.0)
获取cpu某个指标的cpu 信息
>>>psutil.cpu_times().user #cpu用户时间百分比57.08
>>>psutil.cpu_count() #逻辑cpu的数量1
>>> psutil.cpu_count(logical=False) #物理cpu的数量1
(2)内存信息
Linux系统的内存利用率信息涉及total(内存总数)、used(已使 用的内存数)、free(空闲内存数)、buffers(缓冲使用数)、 cache(缓存使用数)、swap(交换分区使用数)等,分别使用 psutil.virtual_memory()与psutil.swap_memory()方法获取这些信 息,具体见下面的操作例子:
获取全部内存信息
>>> mem=psutil.virtual_memory()>>>mem
svmem(total=1928081408, available=1635614720, percent=15.2, used=117481472, free=1023430656, active=433111040, inactive=346320896, buffers=55558144, cached=731611136, sh