系统性能信息模块psutil
psutil是一个跨平台库,能够轻松实现获取系统运行的进程和系统利用率(CPU,内存,磁盘,网络等)信息,主要应用于系统监控,分析和限制系统资源及进程的管理,它实现了同等命令行工具提供的功能,如ps,top,lsof,netstat,ifconfig,who,df,kill,free,nice等.支持32位,和64位的Linux,Windows,OS X,FreeBSD等操作系统。
获取系统性能信息
1 1 cpu信息 2 #Linux系统cpu利用率有以下几个部分 3 #User Time,执行用户进程的时间百分比 4 #System Time,执行内核进程和中断的时间百分比 5 #Wait IO,由于IO等待使cpu处于idle(空闲)状态的时间百分比 6 #Idle,cpu处于空闲状态的时间百分比 7 8 >>> import psutil 9 #获取cpu完成信息 10 >>> psutil.cpu_times() 11 scputimes(user=29.36, nice=0.0, system=26.59, idle=9619.35, iowait=64.78, irq=0.5, softirq=1.67, steal=0.0, guest=0.0) 12 13 #获取用户user的cpu时间比 14 >>> psutil.cpu_times().user 15 34.54 16 17 #获取cpu逻辑个数 18 >>> psutil.cpu_count() 19 4 20 21 #获取cpu物理个数 22 >>> psutil.cpu_count(logical=False) 23 4 24 25 2 内存信息 26 #Linux系统的内存利用率信息涉及 27 #total 内存总数 28 #used 已使用的内存数 29 #free 空闲内存数 30 #buffers 缓冲使用数 31 #cache 缓存使用数 32 #swap 交换分区使用数 等 33 #使用 psutil.virtual_memory()与psutil.memory()方法获取 34 35 #获取内存完整信息 36 >>>mem = psutil.virtual_memory() 37 >>> mem 38 svmem(total=1961488384, available=1483986944, percent=24.3, used=341475328, free=941473792, active=677801984, inactive=212774912, buffers=32038912, cached=646500352, shared=4116480) 39 40 #获取内存总数 41 >>> mem.total 42 1961488384 43 44 #获取空闲内存数 45 >>> mem.free 46 941473792 47 48 #获取SWAP分区信息 49 >>> psutil.swap_memory() 50 sswap(total=2147475456, used=0, free=2147475456, percent=0.0, sin=0, sout=0) 51 52 3 磁盘信息 53 #磁盘利用率使用psutil.disk_usage()方法获取 54 #IO信息 55 #read_count 读IO数 56 #write_count 写IO数 57 #read_bytes IO读字节数 58 #write_bytes IO写字节数 59 #read_time 磁盘读时间 60 #write_time 磁盘写时间 61 #使用psutil.disk_io_counters()获取 62 63 #获取磁盘完整信息 64 >>> psutil.disk_partitions() 65 [sdiskpart(device=‘/dev/sda3‘, mountpoint=‘/‘, fstype=‘ext4‘, opts=‘rw‘), sdiskpart(device=‘/dev/sda1‘, mountpoint=‘/boot‘, fstype=‘ext4‘, opts=‘rw‘)] 66 67 #获取/分区使用情况 68 >>> psutil.disk_usage(‘/‘) 69 sdiskusage(total=18506760192, used=4438568960, free=13128093696, percent=25.3) 70 71 #获取硬盘总IO数 72 >>> psutil.disk_io_counters() 73 74 4 网络信息 75 #bytes_sent 发送字节数 76 #bytes_recv 接收字节数 77 #packets_sent 发送数据包数 78 #packest_recv 接收数据包数 79 #使用psutil.net_io_counters()获取 80 >>> psutil.net_io_counters() 81 82 83 5 其他系统信息 84 #psutil模块还支持获取用户登录,开机时间等信息 85 #显示当前登录系统的用户信息 86 >>> psutil.users() 87 88 #获取开机时间 89 >>> psutil.boot_time()
系统进程管理方法
1 #列出所有进程的PID 2 >>> psutil.pids() 3 4 #实例化一个Process对象,参数为一个PID 5 >>>p = psutil.Process(3197) 6 7 #进程名 8 >>> p.name() 9 ‘python3‘ 10 11 #进程bin路径 12 >>> p.exe() 13 ‘/opt/python3/bin/python3.5‘ 14 15 #进程工作绝对路径 16 >>> p.cwd() 17 18 #进程状态 19 >>> p.status() 20 21 #进程创建时间 22 >>> p.create_time() 23 24 #uid信息 25 >>> p.uids() 26 27 #gid信息 28 >>> p.gids() 29 30 #进程cpu时间,包括user,system两个时间 31 >>> p.cpu_times() 32 33 #进程内存利用率 34 >>> p.memory_percent() 35 36 #进程内存rss,vms信息 37 >>> p.memory_info() 38 39 #进程IO信息 40 >>> p.io_counters() 41 42 #进程开启的线程数 43 >>> p.num_threads()