一、工具:psutil模块
psutil是一个跨平台模块,试用相应方法可以直接获取计算机CPU,内存,磁盘,网络等资源使用情况;可以使用我们学习知识与这模块用来做系统监控,性能分析;如果大家熟悉Linux系统,它能够实现ps、top、lsof、netstat、df等命令功能。
1.1、psutil安装:
PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取
psutil是第三方模块,使用时候需要要安装,相关说明链接地址:
https://pypi.org/project/psutil/ ;
pip安装方式:
pip install psutil
验证:
#导入模块 import psutil #查看版本信息 psutil.version_info
输出信息:
(5, 4, 8)
这里说明安装成功(版本可能会不同,但是不影响使用);
两个个知识点需要简单介绍下,这里只需要了解即可:
1)CPU数量:CPU分为物理CPU与逻辑CPU,之间关系如下:
1>物理CPU:计算机实际CPU数量,一般个人电脑1个;
2>核数:现在CPU基本都是多核,比如双核,4核;
3>逻辑CPU:物理CPU*核数*超线程数
2)CPU运行状态分为用户态与内核态;
1>用户态是指程序在内存运行,不直接访问硬件资源;
2>用户需要访问硬件资源,需要系统调用,这部分有操作系统(内核)完成,称为内核态,例如:读写文件,网络数据收发,键盘事件获取等;
下面我们来实际操作下(windows环境):
import psutil #获取CPU不同状态运行时间 print(psutil.cpu_times()) print('CPU 执行用户进程时间:', psutil.cpu_times().user) print('CPU 执行系统调用时间:', psutil.cpu_times().system) print('CPU 空闲等待 时间:', psutil.cpu_times().idle) print('CPU 响应中断 时间:', psutil.cpu_times().interrupt) #CPU使用率:不加参数为上一次调用到现在使用率 print('CPU 使用率:',psutil.cpu_percent()) #3秒内CPU使用率 print('CPU 3秒内使用率:',psutil.cpu_percent(interval=3)) #3秒内每个CPU使用率 print('每个逻辑CPU使用率:',psutil.cpu_percent( percpu = True)) #CPU各个状态使用情况(百分比) print('CPU 各个状态使用情况:',psutil.cpu_times_percent()) #每个CPU各个状态使用情况 print('各个CPU 各个状态使用情况:') cpuinfos = psutil.cpu_times_percent(percpu = True) for info in cpuinfos: print(info)
运行结果如下:
scputimes(user=85326.484375, system=56630.8125, idle=2245745.0625, interrupt=5347.296875, dpc=1395.984375) CPU 执行用户进程时间: 85326.484375 CPU 执行系统调用时间: 56630.8125 CPU 空闲等待 时间: 2245745.0625 CPU 响应中断 时间: 5347.296875 CPU 使用率: 3.4 CPU 3秒内使用率: 2.5 每个逻辑CPU使用率: [7.0, 2.1, 4.5, 2.5, 2.7, 2.1, 2.1, 2.7] CPU 各个状态使用情况: scputimes(user=1.4, system=1.5, idle=96.8, interrupt=0.3, dpc=0.0) 各个CPU 各个状态使用情况: scputimes(user=1.8, system=3.1, idle=93.0, interrupt=1.9, dpc=0.2) scputimes(user=0.4, system=1.6, idle=97.9, interrupt=0.1, dpc=0.0) scputimes(user=1.6, system=2.8, idle=95.5, interrupt=0.1, dpc=0.0) scputimes(user=1.0, system=1.4, idle=97.5, interrupt=0.1, dpc=0.0) scputimes(user=2.4, system=0.2, idle=97.3, interrupt=0.0, dpc=0.0) scputimes(user=1.1, system=1.0, idle=97.9, interrupt=0.0, dpc=0.0) scputimes(user=0.8, system=1.2, idle=97.9,