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等操作系统
我们要使用他需要先安装
pip install psutil
统计CPU的用户/系统/空闲时间
import psutil print(psutil.cpu_times())
输出
scputimes(user=4395.40625, system=6250.140625, idle=141204.359375, interrupt=225.59375, dpc=198.09375)
查看CPU个数
#查看CPU逻辑个数 psutil.cpu_count() #查看CPU物理个数 psutil.cpu_count(logical=False)
查看CPU使用情况
#percpu设置为False则是所有CPU平均使用率,否则就列出所有CPU使用率 psutil.cpu_percent(interval=5,percpu=False)
以上是CPU的信息,我们接下来看看内存的信息
print(psutil.virtual_memory())
打印处信息
svmem(total=17033768960, available=10475085824, percent=38.5, used=6558683136, free=10475085824)
然后是swap的信息
print(psutil.swap_memory())
打印出信息
sswap(total=19583905792, used=8935858176, free=10648047616, percent=45.6, sin=0, sout=0)
下面我们再看看磁盘信息
print(psutil.disk_partitions())
打印出信息
[sdiskpart(device='C:\\', mountpoint='C:\\', fstype='NTFS', opts='rw,fixed'), sdiskpart(device='D:\\', mountpoint='D:\\', fstype='NTFS', opts='rw,fixed')]
磁盘IO信息获取
print(psutil.disk_io_counters()) #获取单个磁盘IO信息使用 print(psutil.disk_io_counters(perdisk=True))
打印出信息
{'PhysicalDrive0': sdiskio(read_count=195329, write_count=202019, read_bytes=5904132096, write_bytes=3749375488, read_time=209, write_time=164)}
查看分区使用情况
print(psutil.disk_usage("C:\\"))
打印出C盘信息
sdiskusage(total=256690352128, used=82179559424, free=174510792704, percent=32.0)
最后我们获取下网络IO情况
#获取总的网络IO print(psutil.net_io_counters()) #获取网卡的IO信息 print(psutil.net_io_counters(pernic=True))
打印出信息
{'以太网': snetio(bytes_sent=0, bytes_recv=0, packets_sent=0, packets_recv=0, errin=0, errout=0, dropin=0, dropout=0), 'vEthernet ( 默认交换机)': snetio(bytes_sent=192613, bytes_recv=0, packets_sent=1319, packets_recv=0, errin=0, errout=0, dropin=0, dropout=0), 'vEthernet (yitu_nat)': snetio(bytes_sent=0, bytes_recv=0, packets_sent=0, packets_recv=0, errin=0, errout=0, dropin=0, dropout=0), 'vEthernet (yitu_wlan)': snetio(bytes_sent=23108885, bytes_recv=108587072, packets_sent=146929, packets_recv=190757, errin=0, errout=0, dropin=0, dropout=0), '本地连接* 1': snetio(bytes_sent=0, bytes_recv=0, packets_sent=0, packets_recv=0, errin=0, errout=0, dropin=0, dropout=0), '本地连接* 2': snetio(bytes_sent=0, bytes_recv=0, packets_sent=0, packets_recv=0, errin=0, errout=0, dropin=0, dropout=0), 'Loopback Pseudo-Interface 1': snetio(bytes_sent=0, bytes_recv=0, packets_sent=0, packets_recv=0, errin=0, errout=0, dropin=0, dropout=0)}