【实例代码分享】揭秘超强性能监控工具:Python psutil库
01前言
相信在做的各位都了解过cpu,内存,磁盘,这些在我们的工作中多多少少都会用的到,特别是做过性能测试的小伙们,为什么提到cpu,内存这些呢,主要今天给大家分享一个python的第3方库,可以用来检测电脑上的cpu或者服务器上的cpu变化。从而进行查看我们的性能状态。
02 psutil
psutil属于python跨平台使用的库,主要作用就是获取系统运行的进程和系统利用率(cpu,内存,磁盘)等信息,可以用于监控服务器和本地的性能指标。
03 安装
pip install psutil 安装psutil
04 常见功能
获取cpu信息
获取当前cpu信息,直接通过psutil库中的方法进行获取,其中interval=1表示1秒内的cpu值
-
import psutil -
# 获取当前CPU -
cpu = psutil.cpu_percent(interval=1) -
print(f'目前CPU为:{cpu}%')
获取进程信息
获取当前进程信息,直接通过psutil库中的pids()进行获取
-
import psutil -
# 获取当前pid号 -
pid = psutil.pids() -
print('当前的pid列表:%s' %pid)
获取内存信息
获取当前内存信息,直接通过psutil库中的virtual_memory()进行获取。
-
import psutil -
# 获取内存 -
mem = psutil.virtual_memory() -
# 通过方法percent获取内存百分比 -
print(f'当前内存:{mem.percent}%')
获取当前磁盘信息
获取当前磁盘信息,直接通过psutil库中的disk_usage()其中'/' 参数表示要查询的磁盘分区或挂载点的路径
-
import psutil -
# 获取磁盘分区 -
disk_=psutil.disk_partitions() -
# 获取当前磁盘使用情况 -
disk = psutil.disk_usage('/') -
# 通过方法percent获取内存百分比 -
print(disk)
05 实例
早上小明上班后,领导告诉他,我们目前的服务器的cpu和内存好像不稳定,让小明帮他写一个脚本然后统计下cpu和内存的变化,给到领导一个excel表格。
好在小明昨天看了这一篇文章,立刻有了灵感,打开pycharm就开始敲起来了
1、首先我们通过安装psutil库
2、分别通过获取cpu和内存
3、通过执行打印出来cpu和内存的值
-
import psutil -
# 获取cpu的信息 -
def cpu(): -
cpu = psutil.cpu_percent(interval=1) -
return cpu -
# 获取内存的信息 -
def mem(): -
mem = psutil.virtual_memory() -
return mem.percent -
# 打印cpu和内存信息 -
def get_print(cpu,mem): -
print(f'当前Cpu:{cpu}%') -
print(f'当前内存:{mem}%') -
a = cpu() -
b = mem() -
get_print(a,b)
通过cmd这里运行查看,发现已经可以单独获取成功当前的cpu和内存了
单独的已经完成了,那么是不是可以写一个循环,进行一直执行这个函数,在通过time函数进行增加间隔时间,然后小明的代码又敲起来了。
1、导入时间函数
2、通过for循环进行执行程序
-
import time -
import psutil -
# 获取cpu的信息 -
def cpu(): -
cpu = psutil.cpu_percent(interval=1) -
return cpu -
# 获取内存的信息 -
def mem(): -
mem = psutil.virtual_memory() -
return mem.percent -
# 打印cpu和内存信息 -
def get_print(cpu,mem): -
print(f'当前Cpu:{cpu}%') -
print(f'当前内存:{mem}%') -
# 循环执行获取函数 -
for i in range(7200): -
a = cpu() -
b = mem() -
get_print(a,b) -
time.sleep(2)
通过运行结果可以看到,目前领导安排的任务已经完成了一半了,那么我们需要写入excel了,
这里小明想要先整理下打印的样式,于是又敲起来了代码
这里小明通过加入了时间函数获取了当前时间打印,加上了cpu和内存的值,优化了打印页面
-
import time -
import psutil -
# 获取cpu的信息 -
def cpu(): -
cpu = psutil.cpu_percent(interval=1) -
return cpu -
# 获取内存的信息 -
def mem(): -
mem = psutil.virtual_memory() -
return mem.percent -
# 打印cpu和内存信息 -
def get_print(cpu,mem): -
# 获取当前时间 -
local_time = time.localtime(time.time()) -
formatted_time = time.strftime('%Y-%m-%d %H:%M:%S', local_time) -
print(formatted_time,f'当前Cpu:{cpu}% 当前内存:{mem}%') -
# 循环执行获取函数 -
for i in range(7200): -
a = cpu() -
b = mem() -
get_print(a,b) -
time.sleep(2)
通过执行结果可以看出来,已经完成了,那么我们就只需要写入excel表格中了。
写入excel
这里小编使用的模块是pandas,也是属于python的第三方库,大多数用于数据处理,后续有机会给大家展示如何运用到测试当中。
-
import time -
import pandas as pd -
import psutil -
def get_info(): -
# 获取当前cpu -
cpu = psutil.cpu_percent(interval=1) -
# 获取当前内存 -
mem = psutil.virtual_memory().percent -
# 获取当前时间 -
local_time = time.localtime(time.time()) -
formatted_time = time.strftime('%Y-%m-%d %H:%M:%S', local_time) -
data = {'时间':[formatted_time], -
'cpu':[f'{cpu}%'], -
'mem':[f'{mem}%'] -
} -
print(data) -
return data -
filename = 'output.xlsx' -
def write_info(data): -
new_df = pd.DataFrame(data) -
with pd.ExcelWriter(filename,mode='a',engine='openpyxl',if_sheet_exists='overlay') as writer: -
# 读取以前的数据 -
existing_df = pd.read_excel(filename, sheet_name='Sheet1') -
# 合并新数据和已存在的数据 -
appended_df = pd.concat([existing_df, new_df], ignore_index=True) -
# 写入合并后的新数据 -
appended_df.to_excel(writer, sheet_name='Sheet1', index=False) -
# 循环读取并写入excel中 -
while True: -
data = get_info() -
write_info(data) -
time.sleep(2)
通过运行后发现已经将对应的cpu和内存都写入到了excel表格中。
方法二:
上图中主要用于我们本地windows系统上,那么小明的领导需要用于服务器上,那么我们将我们的代码放到服务器上运行,因为前面介绍psutil库的时候介绍了,他是跨平台使用,可以在linux上和windows上进行运行。
通过将linux上所需要的环境内容都安装好了后,然后直接将代码上传到linux上,运行程序

06 总结
这里小编通过一个小小的问题,然后简单的介绍了如何通过python获取cpu和内存的过程,然后再介绍了pandas将我们抓取的cpu和内存放到excel中尽显存储。
本篇内容不是特别多,主要简单介绍了python的第三方库psutil。希望在后续的工作中,本篇文章能够帮助到您。
感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取

更多推荐
所有评论(0)