psutil是一个Python写的方便获取系统硬件和性能信息的库。它实现了同等命令行工具提供的功能,如ps、top、lsof、netstat、ifconfig、who、df、kill、free、nice、ionice、iostat、iotop、uptime、pidof、tty、taskset、pmap等。
CPU
>>>import psutil
>>>psutil.cpu_count() #逻辑CPU个数
>>>psutil.cpu_count(logical=False) #物理CPU个数
>>>psutil.cpu_percent() #cpu平均使用率
>>>psutil.cpu_percent(3) #最近3秒钟cpu平均使用率
>>>psutil.cpu_freq() #CPU频率
scpufreq(current=804.0, min=0.0, max=2112.0)
>>>psutil.cpu_stats() #CPU状态
scpustats(ctx_switches=1910389985, interrupts=2644388135, soft_interrupts=0, syscalls=3686421224)
MEMORY
>>>import psutil
>>>psutil.virtual_memory()
部分嵌入式系统:
svmem(total=16919429120, available=4207607808, percent=75.1, used=12711821312, free=4207607808)
linux系统:
svmem(total=135077658624,available=12628275200,percent=90.7,used=122103193600,free=10256912384,active=111388827648,inactive=6278348800,buffers=278413312,cached=2439139328,shared=184320)
解析
1)total:总物理内存,包括已使用的物理内存和没使用的物理内存
total = used + free
2)used:已使用的物理内存
3)free:没使用的物理内存
4)available:可用内存,其包括没使用的物理内存,缓冲(如存在),缓存(若存在)。
available = free + buffers + cached
注意available和free的区别
5)percent:内存使用率,(总物理内存大小 - 可用内存大小) / 总物理内存大小 * 100
percent = (total - available) / total * 100
延伸
交换内存
>>>import psutil
>>>psutil.swap_memory()
sswap(total=29810581504, used=26177650688, free=3632930816, percent=87.8, sin=0, sout=0)
DISK
>>>import psutil
>>>psutil.disk_usage("C:") # C盘的使用率
sdiskusage(total=285441257472, used=103434944512, free=182006312960, percent=36.2)
>>>psutil.disk_usage("/") # 根分区的使用率
sdiskusage(total=225328492544, used=77228355584, free=148100136960, percent=34.3)
>>>psutil.disk_partitions() # 获取分区信息
[sdiskpart(device='C:\\', mountpoint='C:\\', fstype='NTFS', opts='rw,fixed', maxfile=255, maxpath=260), sdiskpart(device='D:\\', mountpoint='D:\\', fstype='NTFS', opts='rw,fixed', maxf
ile=255, maxpath=260)]
>>>psutil.disk_io_counters() # 获取硬盘总的io和读写信息
sdiskio(read_count=3036624, write_count=7461516, read_bytes=111278890496, write_bytes=176975582208, read_time=1369, write_time=3012)
>>>psutil.disk_io_counters(perdisk=True) # 获取单分区的io和读写信息
{'PhysicalDrive0': sdiskio(read_count=3046900, write_count=7464803, read_bytes=111679064576, write_bytes=177050010624, read_time=1372, write_time=3014)}
网友评论