python模块--psutil: 跨平台的设备监控模块(CPU, 内存, 硬盘,网络,传感器(温度、风扇、电池))

转摘文章:python模块--psutil: 跨平台的设备监控模块(CPU, 内存, 硬盘,网络,传感器(温度、风扇、电池))_浅弋、璃鱼的博客-CSDN博客

 

一、概要:

psutil(进程和系统实用程序)是一个跨平台库,用于 在Python中检索有关正在运行的进程和系统利用率(CPU,内存,磁盘,网络,传感器)的信息。它主要用于系统监视,分析和限制流程资源以及运行流程的管理。它实现了UNIX命令行工具提供的许多功能,例如:ps,top,lsof,netstat,ifconfig,who,df,kill,free,nice,ionice,iostat,iotop,uptime,pidof,tty,taskset,pmap。psutil目前支持以下平台:

 

linux;

windows;

mac os

FreeBSD, OpenBCD, NetBsd;

AIX;

支持32位和64位的架构;

支持python>=2.6; python>=3.4

二、安装:

github: https://github.com/giampaolo/psutil

pypi: https://pypi.org/project/psutil/

使用pip包管理利器直接安装:

pip install psutil

 

三、具体实例

1. CPU:

 

 

版权声明:本文为CSDN博主「浅弋、璃鱼」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/qq_35709559/article/details/89532973

一、概要:psutil(进程和系统实用程序)是一个跨平台库,用于 在Python中检索有关正在运行的进程和系统利用率(CPU,内存,磁盘,网络,传感器)的信息。它主要用于系统监视,分析和限制流程资源以及运行流程的管理。它实现了UNIX命令行工具提供的许多功能,例如:ps,top,lsof,netstat,ifconfig,who,df,kill,free,nice,ionice,iostat,iotop,uptime,pidof,tty,taskset,pmap。psutil目前支持以下平台:
linux;windows;mac osFreeBSD, OpenBCD, NetBsd;AIX;…支持32位和64位的架构;支持python>=2.6; python>=3.4二、安装:github: https://github.com/giampaolo/psutilpypi: https://pypi.org/project/psutil/使用pip包管理利器直接安装:
pip install psutil1

三、具体实例1. CPU:# coding=utf-8import psutil
# 去获取cpu的详细信息cpus = psutil.cpu_times()print("CPU的详细信息:{}".format(cpus))

# psutil获取系统cpu使用率的方法是cpu_percent()# 两个参数,分别是interval和percpu,# interval指定的是计算cpu使用率的时间间隔,# percpu则指定是选择总的使用率还是每个cpu的使用率。(默认为False)percent = psutil.cpu_percent(interval=1)print(f"当前CPU总使用率为:{percent}%")
percent = psutil.cpu_percent(interval=1, percpu=True)print(f"当前每个CPU使用率为:{percent}")
# cpu详细使用率times_percent = psutil.cpu_times_percent(interval=1, percpu=False)print(f"当前CPU总详细使用率为:{times_percent}%")

# cpu核数logical_count = psutil.cpu_count()print(f"CPU逻辑核数:{logical_count}")
cpu_count = psutil.cpu_count(logical=False)print(f"CPU物理核数:{logical_count}")

# cpu状态stats = psutil.cpu_stats()print(f"cpu当前状态:{stats}")
# cpu频率freq = psutil.cpu_freq()print(f"cpu的频率:{freq}")1234567891011121314151617181920212223242526272829303132333435363738结果:
CPU的详细信息:scputimes(user=1134.52, nice=7.61, system=555.98, idle=15817.17, iowait=41.83, irq=0.0, softirq=27.35, steal=0.0, guest=0.0, guest_nice=0.0)当前CPU总使用率为:1.5%当前每个CPU使用率为:[19.2, 19.4, 16.3, 13.1]当前CPU总详细使用率为:scputimes(user=9.6, nice=0.0, system=5.1, idle=84.8, iowait=0.3, irq=0.0, softirq=0.3, steal=0.0, guest=0.0, guest_nice=0.0)%CPU逻辑核数:4CPU物理核数:22cpu当前状态:scpustats(ctx_switches=11882258, interrupts=6862862, soft_interrupts=3863165, syscalls=0)cpu的频率:scpufreq(current=931.42925, min=800.0, max=3500.0)123456782.内存:#coding=utf-8import psutil
# 虚拟内存 总内存virtual = psutil.virtual_memory()print(f"虚拟内存信息:{virtual}")
# 交换分区swap = psutil.swap_memory()print(f"交换分区:{swap}")12345678910结果:
虚拟内存信息:svmem(total=8339914752, available=4141465600, percent=50.3, used=3977195520, free=1327108096, active=3962109952, inactive=1365458944, buffers=316178432, cached=2719432704, shared=89669632, slab=702013440)交换分区:sswap(total=2147479552, used=0, free=2147479552, percent=0.0, sin=0, sout=0)123.硬盘:#coding=utf-8import psutil
# 获取硬盘信息disk = psutil.disk_partitions()print(f"硬盘的信息:{disk}")
# 获取分区状态usage = psutil.disk_usage('/')print(f"'/'分区状态:{usage}")
# 获取单个分区的IO个数io_counters = psutil.disk_io_counters(perdisk=False)print(f"单个分区的io个数:{io_counters}")1234567891011121314结果:
硬盘的信息:[sdiskpart(device='/dev/sda1', mountpoint='/', fstype='ext4', opts='rw,relatime,errors=remount-ro,data=ordered')]'/'分区状态:sdiskusage(total=63142932480, used=23225364480, free=36679671808, percent=38.8)单个分区的io个数:sdiskio(read_count=95823, write_count=61962, read_bytes=1900379136, write_bytes=1490157568, read_time=156552, write_time=247832, read_merged_count=28869, write_merged_count=85194, busy_time=56828)1234.网络:# coding=utf-8import psutil
# 获取网络读写字节/包的个数io_counters = psutil.net_io_counters()print(f"网络读写字节/包的个数:{io_counters}")

# 输出网络每个接口读写字节/包的个数print("网络每个接口读写字节/包的个数:")counters = psutil.net_io_counters(pernic=True)for port, value in counters.items():    print(f"{port}:{value}")

# 获取网络接口信息print("获取网络接口信息:")if_addrs = psutil.net_if_addrs()for port, value in if_addrs.items():    print(f"{port}:{value}")

# 获取网络接口状态print("获取网络接口状态:")if_stats = psutil.net_if_stats()for port, value in if_stats.items():    print(f"{port}:{value}")123456789101112131415161718192021222324252627结果:
网络读写字节/包的个数:snetio(bytes_sent=6802690, bytes_recv=54851021, packets_sent=33268, packets_recv=63304, errin=0, errout=0, dropin=0, dropout=0)网络每个接口读写字节/包的个数:ens33:snetio(bytes_sent=6227927, bytes_recv=54276258, packets_sent=27193, packets_recv=57229, errin=0, errout=0, dropin=0, dropout=0)lo:snetio(bytes_sent=574763, bytes_recv=574763, packets_sent=6075, packets_recv=6075, errin=0, errout=0, dropin=0, dropout=0)获取网络接口信息:lo:[snicaddr(family=<AddressFamily.AF_INET: 2>, address='127.0.0.1', netmask='255.0.0.0', broadcast=None, ptp=None), snicaddr(family=<AddressFamily.AF_INET6: 10>, address='::1', netmask='ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff', broadcast=None, ptp=None), snicaddr(family=<AddressFamily.AF_PACKET: 17>, address='00:00:00:00:00:00', netmask=None, broadcast=None, ptp=None)]ens33:[snicaddr(family=<AddressFamily.AF_INET: 2>, address='192.168.116.131', netmask='255.255.255.0', broadcast='192.168.116.255', ptp=None), snicaddr(family=<AddressFamily.AF_INET6: 10>, address='fe80::71b0:76ea:7c56:e6c1%ens33', netmask='ffff:ffff:ffff:ffff::', broadcast=None, ptp=None), snicaddr(family=<AddressFamily.AF_PACKET: 17>, address='00:0c:29:95:e8:f1', netmask=None, broadcast='ff:ff:ff:ff:ff:ff', ptp=None)]获取网络接口状态:ens33:snicstats(isup=True, duplex=<NicDuplex.NIC_DUPLEX_FULL: 2>, speed=1000, mtu=1500)lo:snicstats(isup=True, duplex=<NicDuplex.NIC_DUPLEX_UNKNOWN: 0>, speed=0, mtu=65536)123456789105. 传感器(温度、风扇、电池)# coding=utf-8import psutiltemperatures = psutil.sensors_temperatures()print(temperatures)
fans = psutil.sensors_fans()print(fans)
battery = psutil.sensors_battery()print(battery)12345678910结果:
{'acpitz': [shwtemp(label='', current=47.0, high=103.0, critical=103.0)], 'asus': [shwtemp(label='', current=47.0, high=None, critical=None)], 'coretemp': [shwtemp(label='Physical id 0', current=52.0, high=100.0, critical=100.0),              shwtemp(label='Core 0', current=45.0, high=100.0, critical=100.0)]}{'asus': [sfan(label='cpu_fan', current=3200)]}sbattery(percent=93, secsleft=16628, power_plugged=False)123456
————————————————版权声明:本文为CSDN博主「浅弋、璃鱼」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/qq_35709559/article/details/89532973
posted @ 2022-05-25 19:15  lili414  阅读(402)  评论(0编辑  收藏  举报