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值

  1. import psutil

  2. # 获取当前CPU

  3. cpu = psutil.cpu_percent(interval=1)

  4. print(f'目前CPU为:{cpu}%')

获取进程信息

获取当前进程信息,直接通过psutil库中的pids()进行获取

  1. import psutil

  2. # 获取当前pid号

  3. pid = psutil.pids()

  4. print('当前的pid列表:%s' %pid)

获取内存信息

获取当前内存信息,直接通过psutil库中的virtual_memory()进行获取。

  1. import psutil

  2. # 获取内存

  3. mem = psutil.virtual_memory()

  4. # 通过方法percent获取内存百分比

  5. print(f'当前内存:{mem.percent}%')

获取当前磁盘信息

获取当前磁盘信息,直接通过psutil库中的disk_usage()其中'/' 参数表示要查询的磁盘分区或挂载点的路径

  1. import psutil

  2. # 获取磁盘分区

  3. disk_=psutil.disk_partitions()

  4. # 获取当前磁盘使用情况

  5. disk = psutil.disk_usage('/')

  6. # 通过方法percent获取内存百分比

  7. print(disk)

05 实例

早上小明上班后,领导告诉他,我们目前的服务器的cpu和内存好像不稳定,让小明帮他写一个脚本然后统计下cpu和内存的变化,给到领导一个excel表格。

好在小明昨天看了这一篇文章,立刻有了灵感,打开pycharm就开始敲起来了

1、首先我们通过安装psutil库

2、分别通过获取cpu和内存

3、通过执行打印出来cpu和内存的值

  1. import psutil

  2. # 获取cpu的信息

  3. def cpu():

  4. cpu = psutil.cpu_percent(interval=1)

  5. return cpu

  6. # 获取内存的信息

  7. def mem():

  8. mem = psutil.virtual_memory()

  9. return mem.percent

  10. # 打印cpu和内存信息

  11. def get_print(cpu,mem):

  12. print(f'当前Cpu:{cpu}%')

  13. print(f'当前内存:{mem}%')

  14. a = cpu()

  15. b = mem()

  16. get_print(a,b)

通过cmd这里运行查看,发现已经可以单独获取成功当前的cpu和内存了

单独的已经完成了,那么是不是可以写一个循环,进行一直执行这个函数,在通过time函数进行增加间隔时间,然后小明的代码又敲起来了。

1、导入时间函数

2、通过for循环进行执行程序

  1. import time

  2. import psutil

  3. # 获取cpu的信息

  4. def cpu():

  5. cpu = psutil.cpu_percent(interval=1)

  6. return cpu

  7. # 获取内存的信息

  8. def mem():

  9. mem = psutil.virtual_memory()

  10. return mem.percent

  11. # 打印cpu和内存信息

  12. def get_print(cpu,mem):

  13. print(f'当前Cpu:{cpu}%')

  14. print(f'当前内存:{mem}%')

  15. # 循环执行获取函数

  16. for i in range(7200):

  17. a = cpu()

  18. b = mem()

  19. get_print(a,b)

  20. time.sleep(2)

通过运行结果可以看到,目前领导安排的任务已经完成了一半了,那么我们需要写入excel了,

这里小明想要先整理下打印的样式,于是又敲起来了代码

这里小明通过加入了时间函数获取了当前时间打印,加上了cpu和内存的值,优化了打印页面

  1. import time

  2. import psutil

  3. # 获取cpu的信息

  4. def cpu():

  5. cpu = psutil.cpu_percent(interval=1)

  6. return cpu

  7. # 获取内存的信息

  8. def mem():

  9. mem = psutil.virtual_memory()

  10. return mem.percent

  11. # 打印cpu和内存信息

  12. def get_print(cpu,mem):

  13. # 获取当前时间

  14. local_time = time.localtime(time.time())

  15. formatted_time = time.strftime('%Y-%m-%d %H:%M:%S', local_time)

  16. print(formatted_time,f'当前Cpu:{cpu}% 当前内存:{mem}%')

  17. # 循环执行获取函数

  18. for i in range(7200):

  19. a = cpu()

  20. b = mem()

  21. get_print(a,b)

  22. time.sleep(2)

通过执行结果可以看出来,已经完成了,那么我们就只需要写入excel表格中了。

写入excel

这里小编使用的模块是pandas,也是属于python的第三方库,大多数用于数据处理,后续有机会给大家展示如何运用到测试当中。

  1. import time

  2. import pandas as pd

  3. import psutil

  4. def get_info():

  5. # 获取当前cpu

  6. cpu = psutil.cpu_percent(interval=1)

  7. # 获取当前内存

  8. mem = psutil.virtual_memory().percent

  9. # 获取当前时间

  10. local_time = time.localtime(time.time())

  11. formatted_time = time.strftime('%Y-%m-%d %H:%M:%S', local_time)

  12. data = {'时间':[formatted_time],

  13. 'cpu':[f'{cpu}%'],

  14. 'mem':[f'{mem}%']

  15. }

  16. print(data)

  17. return data

  18. filename = 'output.xlsx'

  19. def write_info(data):

  20. new_df = pd.DataFrame(data)

  21. with pd.ExcelWriter(filename,mode='a',engine='openpyxl',if_sheet_exists='overlay') as writer:

  22. # 读取以前的数据

  23. existing_df = pd.read_excel(filename, sheet_name='Sheet1')

  24. # 合并新数据和已存在的数据

  25. appended_df = pd.concat([existing_df, new_df], ignore_index=True)

  26. # 写入合并后的新数据

  27. appended_df.to_excel(writer, sheet_name='Sheet1', index=False)

  28. # 循环读取并写入excel中

  29. while True:

  30. data = get_info()

  31. write_info(data)

  32. time.sleep(2)

通过运行后发现已经将对应的cpu和内存都写入到了excel表格中。

方法二:

上图中主要用于我们本地windows系统上,那么小明的领导需要用于服务器上,那么我们将我们的代码放到服务器上运行,因为前面介绍psutil库的时候介绍了,他是跨平台使用,可以在linux上和windows上进行运行。

通过将linux上所需要的环境内容都安装好了后,然后直接将代码上传到linux上,运行程序

06 总结

这里小编通过一个小小的问题,然后简单的介绍了如何通过python获取cpu和内存的过程,然后再介绍了pandas将我们抓取的cpu和内存放到excel中尽显存储。

本篇内容不是特别多,主要简单介绍了python的第三方库psutil。希望在后续的工作中,本篇文章能够帮助到您。

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

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

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐