广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python神器:psutil库使用详解
  • 559
分享到

Python神器:psutil库使用详解

python测试开发软件测试自动化测试 2023-10-28 10:10:32 559人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

文章目录 一、背景二、安装&基本使用1、获取CPU信息2、获取内存信息3、获取磁盘信息4、获取进程信息 三、项目应用实战1、获取电脑整体的CPU、内存占用情

文章目录

一、背景

python的世界里,有一些库因其强大的功能和易用性而备受开发者们的喜爱。今天,我们要介绍的就是其中的一员——psutil库。psutil(Python system and process utilities)是一个跨平台的第三方库,用于获取系统运行时的进程和系统利用率(包括CPU、内存、磁盘、网络等)信息。它主要用于系统监控,性能分析,进程管理等场景。

二、安装&基本使用

psutil安装:

pip install psutil

安装完成后,我们就可以开始使用psutil库了。下面,我们将介绍一些常用的功能。

1、获取CPU信息

psutil库可以获取CPU的使用情况。例如,我们可以使用psutil.cpu_percent(interval=1)来获取CPU的使用率。

import psutilcpu_percent = psutil.cpu_percent(interval=1)print(f'CPU usage: {cpu_percent}%')
2、获取内存信息

我们可以使用psutil.virtual_memory()来获取系统的内存使用情况。

import psutilmem_info = psutil.virtual_memory()print(f'Total memory: {mem_info.total / (1024**3):.2f} GB')print(f'Used memory: {mem_info.used / (1024**3):.2f} GB')print(f'Memory usage: {mem_info.percent}%')
3、获取磁盘信息

psutil库也可以获取磁盘的使用情况。例如,我们可以使用psutil.disk_usage(‘/’)来获取根目录的磁盘使用情况。

import psutildisk_usage = psutil.disk_usage('/')print(f'Total disk space: {disk_usage.total / (1024**3):.2f} GB')print(f'Used disk space: {disk_usage.used / (1024**3):.2f} GB')print(f'Disk usage: {disk_usage.percent}%')
4、获取进程信息

psutil库还可以获取系统中运行的所有进程的信息。例如,我们可以使用psutil.pids()来获取所有进程的PID。

import psutilpids = psutil.pids()print(f'Total processes: {len(pids)}')

三、项目应用实战

假设有这样的一个需求:长时间运行PyCharm程序,监控Pycharm程序的CPU/内存占用,以验证Pycharm程序在长时间打开的情况下,程序是否会存在CPU占用率升高或内存泄漏的情况。

基于这样的需求,我们可以使用psutil库和pandas库来完成,脚本如下:

1、获取电脑整体的CPU、内存占用情况
# 获取电脑整体的CPU、内存占用情况def getMemory():    data = psutil.virtual_memory()    memory = str(int(round(data.percent))) + "%"    print("系统整体memory占用:"+memory)    return memorydef getcpu():    cpu_list=psutil.cpu_percent(percpu=True)    average_cpu = round(sum(cpu_list) / len(cpu_list),2)    cpu=str(average_cpu) + "%"    print("系统整体cpu占用:"+cpu)    return cpu
2、获取指定进程的CPU和内存占用信息代码
# 获取指定进程的CPU和内存占用信息代码def getMemSize(pid):    # 根据进程号来获取进程的内存大小    process = psutil.Process(pid)    memInfo = process.memory_info()    # rss: 该进程实际使用物理内存(包含共享库占用的全部内存)。    # vms:该进程使用的虚拟内存总量。    return memInfo.rss / 1024 / 1024def getCpuPercent(pid):    # 根据进程号来获取进程的内存大小    p = psutil.Process(pid)    p_cpu = p.cpu_percent(interval=0.1)    cpu = round(p_cpu,2)    return cpudef getTotalM(processName):    # 一个进程名对应的可能有多个进程    # 进程号才是进程的唯一标识符,进程名不是    totalM = 0    for i in psutil.process_iter():        if i.name() == processName:            totalM += getMemSize(i.pid)    print('进程占用内存:%.2f MB' % totalM)    finalM=round(totalM,2)    return finalMdef getTotalCPU(processName):    # 一个进程名对应的可能有多个进程    # 进程号才是进程的唯一标识符,进程名不是    totalCPU = 0    for i in psutil.process_iter():        if i.name() == processName:            totalCPU += getCpuPercent(i.pid)    totalCPU_convert=round(totalCPU,2)    finalCPU=str(totalCPU_convert)+'%'    print("进程占用CPU:"+finalCPU)    return totalCPU_convert
3、将测试结果数据写入csv文件
# 将测试结果数据写入csv文件def writeexcel(caseName,cpu,mem,pycharmcpu,pycharmmem):    timestamp = time.strftime('%Y-%m-%d-%H:%M:%S', time.localtime(time.time()))    dict = {'caseName': [caseName], 'Sys_CPU': [cpu], 'Sys_Memory': [mem], 'Pycharm_Cpu': [pycharmcpu], 'Pycharm_Mem': [pycharmmem],'OperationTime':[timestamp]}    # 字典中的key值即为csv中列名    dataframe = pd.DataFrame(dict)    dataframe['OperationTime'] = pd.to_datetime(dataframe['OperationTime'])    # 将DataFrame存储为csv, mode='a'表示每一次都是追加内容而不是覆盖,header=False表示不写列名    dataframe.to_csv("cpuAndMemtest.csv", date_fORMat='%Y-%m-%d-%H:%M:%S', mode='a',index=False,header=False,encoding='GBK')
4、封装方法为函数,以便后续直接调用
# 封装方法为函数,以便后续直接调用def getCpuAndMem(caseName,processName1):    memory = getMemory()    cpu = getCpu()    # 获取pycharm64.exe进程占用的CPU和内存    pycharmmem = getTotalM(processName1)    pycharmcpu = str(getTotalCPU(processName1))+'%'    time.sleep(1)    writeExcel(caseName,cpu,memory,pycharmcpu,pycharmmem)    print("系统整体CPU占用:%s     系统整体内存占用:%s   进程_CPU占用:%s  进程内存占用:%s"%(cpu, memory, pycharmcpu, pycharmmem))    print("===============================================================")
5、运行脚本

在这里插入图片描述

6、生成的csv文件内容

在这里插入图片描述

7、依赖测试数据生成趋势图,用于测试报告使用

在这里插入图片描述

完整的脚本代码我也上传到了我的百度网盘,需要的同学可以添加杨叔微信,加入杨叔测试交流群免费获取~

以上就是psutil库的一些基本用法。实际上,psutil库的功能远不止这些,它还可以获取网络接口信息,系统启动时间,当前用户信息等等。如果你是一名python开发者,那么psutil库无疑是你的必备工具

=================================================================================================
以上就是本次的全部内容,如果对你有帮助,麻烦点个赞+收藏+关注,一键三连啦~ 欢迎关注下方我的公众号:程序员杨叔,各类文章都会第一时间在上面发布,持续分享各类测试开发知识干货,你的支持就是作者更新最大的动力。

来源地址:https://blog.csdn.net/baidu_28340727/article/details/131402628

--结束END--

本文标题: Python神器:psutil库使用详解

本文链接: https://www.lsjlt.com/news/520186.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python神器:psutil库使用详解
    文章目录 一、背景二、安装&基本使用1、获取CPU信息2、获取内存信息3、获取磁盘信息4、获取进程信息 三、项目应用实战1、获取电脑整体的CPU、内存占用情...
    99+
    2023-10-28
    python 测试开发 软件测试 自动化测试
  • Python对比校验神器deepdiff库使用详解
    目录前言deepdiff库安装说明DeepDiff对比json列表校验忽略字符串类型忽略大小写DeepSearchDeepHashextractgrep工作中我们经常要两段代码的区别...
    99+
    2023-05-16
    Python对比库deepdiff Python deepdiff校验
  • Python标准库学习之psutil内存详解
    目录查询CPU信息查询内存信息查询磁盘信息查询网络信息查询进程信息人生苦短,快学Python! 今天介绍的是psutil模块,它是一个跨平台库 https://github.com/...
    99+
    2022-11-12
  • python psutil库的使用示例
    目录CPU信息内存信息磁盘网络其它系统信息进程信息由于Bash实在太恶心,很多运维工程师开始使用Python代替Bash写各种脚本。 虽然理论上可以用Python调用Bash指令实现...
    99+
    2022-11-11
  • Python神器之Pampy模式匹配库的用法详解
    目录Pampy 是哪路神仙Pampy 的花式秀匹配单个字符匹配字典匹配开头和结尾总结大家好,我是闲欢,一个很卷的程序员! 今天给大家分享一个炒鸡炒鸡简单又好用的神器—&m...
    99+
    2022-11-11
  • 详解Java对象转换神器MapStruct库的使用
    目录前言MapStruct简介MapStruct入门1. 引入依赖2. 需要转换的对象3. 创建转换器4. 验证5. 自动生成的实现类MapStruct进阶场景1:属性名称不同、(基...
    99+
    2022-11-13
  • 详解Python调试神器之PySnooper
    相信很多程序员在调试代码时,都用过 print。代码少还好说,如果是大型项目,面对众多 print 的输出结果,可能要头大了。 今天推荐一个 GitHub 热门开源项目:PySnoo...
    99+
    2022-11-12
  • Python周期任务神器之Schedule模块使用详解
    目录1.准备2.基本使用参数传递获取目前所有的作业取消所有作业标签功能设定作业截止时间立即运行所有作业,而不管其安排如何3.高级使用装饰器安排作业并行执行日志记录异常处理如果你想在L...
    99+
    2022-11-10
  • 详解运行Python的神器Jupyter Notebook
    目录Jupyter Notebook启动notebook servernotebook document 的结构code cellsmarkdown cellsraw cells以模块的形式导入Jupyter Not...
    99+
    2022-06-02
    python jupyter notebook
  • Python进程管理神器Supervisor详解
    目录一、简介二、安装三、创建配置文件四、初试五、Web 界面附录:supervisorctl 常用命令一、简介 Supervisor 是一款 Python 开发的进程管理系统,允许用...
    99+
    2022-11-11
  • Golang配置解析神器go viper使用详解
    目录前言viper简介功能viper配置优先级安装viper支持哪些文件格式key大小写问题使用指南如何访问viper的功能配置默认值读取配置文件写配置文件WriteConfigSa...
    99+
    2022-11-13
  • Py的itchat库:python开发神器之itchat的介绍、安装、使用方法详解
    Py的itchat库:python开发神器之itchat的介绍、安装、使用方法详解 itchat是一款基于微信协议的Python接口库,通过itchat可以实现对微信消息的自动回复、获取好友列表等功能...
    99+
    2023-10-25
    python 开发语言
  • 移动端调试神器vConsole使用详解
    目录介绍功能特性使用方法一:使用 npm(推荐)方法二:使用 CDN 直接插入到 HTML开发环境显示生成环境删除vue案例介绍 平时在web应用开发过程中,我们可以console....
    99+
    2022-11-13
  • 如何使用Python库中操作系统级别模块Psutil
    这篇文章主要介绍“如何使用Python库中操作系统级别模块Psutil”,在日常操作中,相信很多人在如何使用Python库中操作系统级别模块Psutil问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使用P...
    99+
    2023-06-15
  • Java开发神器Lombok安装与使用详解
    目录安装Idea插件的安装maven中pom文件的导入使用val@Data@Getter/@Setter@Log4j@AllArgsConstructor@NoArgsConstru...
    99+
    2022-11-13
  • MySQL压测神器HammerDB的部署及使用详解
    目录前言⛳️ 1. HammerDB简介⛳️ 2. 容器部署✨ 2.1 镜像下载✨ 2.2 创建容器✨ 2.3 linux 下安装✨ 2.4 相关校验⛳️3 . HammerDB压测mysql前言 HammerDB 是一...
    99+
    2022-08-09
    mysql  压测神器HammerDB mysql  压测HammerDB
  • Python jiaba库的使用详解
    目录jiaba库的使用1、jieba库的安装2、统计荷塘月色词频总结jiaba库的使用 jieba库是一款优秀的 Python 第三方中文分词库,jieba 支持三种分词模式:精确模...
    99+
    2022-11-12
  • python中time库使用详解
    目录time库的使用:时间获取:(1)time函数(2)localtime()函数和gmtime()函数(3)ctime()函数(与asctime()函数为一对互补函数) ...
    99+
    2022-11-11
  • python urllib库的使用详解
    目录1、请求模块:urllib.request data参数:post请求urlopen()中的参数timeout:设置请求超时时间:响应类型:响应的状态码、响应头:使用代理:url...
    99+
    2022-11-12
  • python HZK16字库使用详解
    目录简介实现的原理:HZK16简介案例:环境: windows7, python2.7 简介 偶然在网上看到热心网友使用python讲微信头像进行了组字,感觉很有意思,就做下研究。 ...
    99+
    2023-02-22
    python HZK16字库 python HZK16字库使用
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作