psutil模块是一个跨平台的获取进程和系统应用情况(CPU,内存,磁盘,网络,传感器)的库。该模块用于系统监控、限制进程资源和运行进程的管理等方面。
安装module
py -m pip install psutil
CPU:
>>> psutil.cpu_count() #cpu逻辑数量
4
>>> psutil.cpu_count(logical=False) # CPU物理核心
2
>>> psutil.cpu_percent() # CPU当前使用率
4.2
内存
>>> mem = psutil.virtual_memory() # 实例化内存对象
>>> mem.total # 系统总计内存
17178693632
>>> mem.used # 系统已经使用内存
4633444352
>>> mem.free # 系统空闲内存
12545249280
>>> mem.used/mem.total #内存使用率百分比
0.2697204136273172
>>> psutil.swap_memory() # swap内存信息
sswap(total=2550136832, used=232665088, free=2317471744, percent=9.1, sin=0, sout=0)
硬盘
>>> psutil.disk_usage('/')
sdiskusage(total=135771664384, used=21782020096, free=113989644288, percent=16.0)
网络
>>> psutil.net_io_counters() #网络总io
snetio(bytes_sent=856264410, bytes_recv=424610682, packets_sent=504832, packets_recv=326307, errin=0, errout=0, dropin=0, dropout=0)
>>> psutil.net_io_counters(pernic=True) #网卡io
{'Ethernet': snetio(bytes_sent=862100800, bytes_recv=426788416, packets_sent=509751, packets_recv=329008, 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)}
开机时间:
>>> import datetime
>>> psutil.boot_time()
1670463972.9816532
>>> datetime.datetime.fromtimestamp(psutil.boot_time ()).strftime("%Y-%m-%d %H: %M: %S")
'2022-12-08 01: 46: 12'
汇总:
# os模块, operate system, 跟操作系统相关的方法, 多是文件操作等
import os
import platform
from datetime import datetime
import time
import psutil
import prettytable
try:
# os.uname在windows系统中不能执行 需要进行异常处理
system_info = os.uname()
except Exception as e:
system_info = platform.uname()
#获取的是开机时间的时间戳
boot_time = psutil.boot_time()
#将开机时间转化为字符串时间
boot_time = datetime.fromtimestamp(boot_time)
now_time = datetime.fromtimestamp(time.time())
print("""
***********************************主机信息监控********************************
主机名: %s
操作系统: %s
内核名称: %s
发行版本号: %s
内核版本: %s
系统架构: %s
当前时间: %s
开机时间: %s
开机时长: %s
""" %(system_info.node, system_info.system, system_info.system,
system_info.release, system_info.version, system_info.machine,
now_time, boot_time, now_time-boot_time
))
##绘制出表格
##物理CPU个数
#逻辑CPU=物理CPU个数*核数
print("-------------------CPU信息------------------")
print("物理CPU个数:",psutil.cpu_count(logical=False))
print("逻辑CPU个数:",psutil.cpu_count())
##CPU使用率
print("CPU的使用率:",psutil.cpu_percent())
print("-------------------网络信息------------------")
print("网络总io:", psutil.net_io_counters())
print("网卡io:", psutil.net_io_counters(pernic=True))
print("-------------------内存信息------------------")
memory = psutil.virtual_memory()
print("总内存大小:",memory.total)
print("已使用的内存大小:",memory.used)
print("内存使用率:",memory.percent)
print("-------------------磁盘信息------------------")
pt = prettytable.PrettyTable(field_names=["分区名称","挂载点",
"文件系统类型","属性",
"磁盘总容量","磁盘使用百分比(单位%)"])
parts =psutil.disk_partitions()
for part in parts:
#查看当前磁盘分区的使用率
usage = psutil.disk_usage(part.device)
#往表格中添加一行记录
pt.add_row([part.device,part.mountpoint,part.fstype,part.opts,usage.total,usage.percent])
print(pt)
输出:
***********************************主机信息监控********************************
主机名: DaisyWindows
操作系统: Windows
内核名称: Windows
发行版本号: 10
内核版本: 10.0.17763
系统架构: AMD64
当前时间: 2022-12-12 03:16:26.661356
开机时间: 2022-12-12 02:16:55.661355
开机时长: 0:59:31.000001
-------------------CPU信息------------------
物理CPU个数: 2
逻辑CPU个数: 4
CPU的使用率: 37.5
-------------------网络信息------------------
网络总io: snetio(bytes_sent=1325347077, bytes_recv=295170560, packets_sent=459948, packets_recv=290620, errin=0, errout=0, dropin=0, dropout=0)
网卡io: {'Ethernet': snetio(bytes_sent=1325347131, bytes_recv=295170560, packets_sent=459949, packets_recv=290620, 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)}
-------------------内存信息------------------
总内存大小: 17178693632
已使用的内存大小: 4413034496
内存使用率: 25.7
-------------------磁盘信息------------------
+----------+--------+--------------+----------+--------------+-----------------------+
| 分区名称 | 挂载点 | 文件系统类型 | 属性 | 磁盘总容量 | 磁盘使用百分比(单位%) |
+----------+--------+--------------+----------+--------------+-----------------------+
| C:\ | C:\ | NTFS | rw,fixed | 135771664384 | 15.3 |
| D:\ | D:\ | NTFS | rw,fixed | 34357637120 | 7.7 |
+----------+--------+--------------+----------+--------------+-----------------------+