参考官方文档:
一、psutil简介
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等。
在Python中获取系统信息的另一个好办法是使用psutil
这个第三方模块。还可以跨平台使用,支持Linux/UNIX/OSX/Windows等,是系统管理员和运维小伙伴不可或缺的必备模块。
Works with Python versions from 2.4 to 3.X.
二、安装psutil模块
pip3 install psutil
三、使用psutil模块
1.获取CPU信息:
1.1 使用psutil.cpu_times()
方法
-
使用
psutil.cpu_times()
获取CPU的完整信息
>>> import psutil >>> psutil.cpu_times() scputimes(user=733.23, nice=2.62, system=122.87, idle=19414.35, iowait=29.46, irq=0.0, softirq=34.18, steal=0.0, guest=0.0, guest_nice=0.0)
-
获取单个数据,如用户的cpu时或io等待时间。
>>> psutil.cpu_times().user 793.19 >>> psutil.cpu_times().iowait 31.79
1.2 psutil.cpu_count()
获取CPU个数
- 使用
psutil.cpu_count()
获取CPU逻辑个数
#cpu_count(,[logical]):默认返回逻辑CPU的个数,当设置logical的参数为False时,返回物理CPU的个数。 >>> psutil.cpu_count() 8
- 使用
psutil.cpu_count(logical=False)
获取CPU的物理个数,默认logical值为True
>>> psutil.cpu_count(logical=False) 8
1.3 psutil.getloadavg()
获取平均系统负载
-
使用
psutil.getloadavg()
可以获取平均系统负载,会以元组的形式返回最近1、5和15分钟内的平均系统负载。
在Windows上,这是通过使用Windows API模拟的,该API产生一个线程,该线程保持在后台运行,并每5秒更新一次结果,从而模仿UNIX行为。 因此,在Windows上,第一次调用此方法,在接下来的5秒钟内,它将返回无意义的(0.0,0.0,0.0)元组。 >>> psutil.getloadavg() (1.22, 1.41, 1.38)
1.4 psutil.cpu_percent()
获取CPU使用率
-
cpu_percent(,[percpu],[interval])
:返回CPU的利用率-
interval
:指定的是计算cpu使用率的时间间隔,interval不为0时,则阻塞时显示interval执行的时间内的平均利用率 -
percpu
:指定是选择总的使用率或者每个cpu的使用率,percpu
为True
时显示所有物理核心的利用率
-
1.指定的是计算cpu使用率的时间间隔 >>> for x in range(10): ... psutil.cpu_percent(interval=1) ... 2.4 2.5 2.7 2.3 2.5 2.2 2.0 2.2 2.4 2.2 2.实现类似top命令的CPU使用率,每秒刷新一次,累计10次: >>> for x in range(10): ... psutil.cpu_percent(interval=1,percpu=True) ... [1.0, 3.1, 5.0, 4.0, 0.0, 4.0, 3.0, 2.0] ... [1.0, 1.0, 6.1, 3.1, 2.0, 2.1, 0.0, 0.0] [2.0, 1.0, 6.0, 4.9, 1.0, 5.1, 1.0, 1.0]
1.5 psutil.cpu_stats()
获取CPU的统计信息
-
cpu_stats()以命名元组的形式返回CPU的统计信息,包括上下文切换,中断,软中断和系统调用次数。
>>> psutil.cpu_stats() scpustats(ctx_switches=3928927, interrupts=2319133, soft_interrupts=1974116, syscalls=0)
1.6 psutil.cpu_freq()
获取CPU频率
-
cpu_freq([percpu]):返回cpu频率
>>> psutil.cpu_freq() scpufreq(current=1799.999, min=0.0, max=0.0)
1.7 psutil.cpu_times_percent()
获取耗时比例
-
cpu_times_percent(,[percpu]):功能和cpu_times大致相同,看字面意思就能知道,该函数返回的是耗时比例。
>>> psutil.cpu_times_percent() scputimes(user=0.1, nice=0.0, system=0.0, idle=99.9, iowait=0.0, irq=0.0, softirq=0.0, steal=0.0, guest=0.0, guest_nice=0.0)
2.获取内存信息
2.1 psutil.virtual_memory()
内存使用情况
psutil.virtual_memory()
:获取系统内存的使用情况,以命名元组的形式返回内存使用情况,包括总内存,可用内存,内存利用率,buffer和cache等。单位为字节。
-
获取内存的完整信息 >>> psutil.virtual_memory() svmem(total=2028425216, available=982532096, percent=51.6, used=861827072, free=810414080, active=401735680, inactive=431902720, buffers=4096, cached=356179968, shared=9203712, slab=236351488) ''' 返回的是字节Byte为单位的整数 重点关注的参数是: 1.total表示内存总的大小 2.percent表示实际已经使用的内存占比。 3.available表示还可以使用的内存。 4.uused表示已经使用的内存 ''' # 使用total获取内存总大小 >>> psutil.virtual_memory().total 2028425216 # 使用获取已经使用的内存 >>> psutil.virtual_memory().used 865882112 # 使用free获取剩余的内存