目录

  • 一、line_profiler
  • 二、memory_profiler
  • 三、timeit
  • 四、pyheat
  • 五、heartrate
  • 六、Pycharm自带的Profiler工具
  • 七、objgraph工具
  • 八、profile和cProfile

一、line_profiler

Python代码优化工具——line_profile

二、memory_profiler

Python代码优化工具——memory_profiler

三、timeit

  1. 参考博客
  2. python内置模块
  3. 功能:测量小代码片段的执行时间
  4. 使用方式:
import timeit
timeit.timeit()
timeit.repeat()

5、参数注解:

  • stmt:传入要测试时间的代码,可以直接接受字符串的表达式,也可以接受函数。如果传入函数,需要把函数导入在当前文件中,调用timeit方法时的参数为 stmt = 'func()', setup = 'from __main__ import func'即可。
  • setup:传入stmt的运行环境,比如stmt中使用到的参数、变量,要导入的模块等。可以写一行语句,也可以写多行语句,写多行语句时要用分号;隔开语句。
  • number:在一组测试中执行stmt的次数,默认100000次。
  • repeat:重复测试的组数,每次的结果构成列表返回,默认5次。
  • 最终执行的次数为number * repeat

6、个人评价

  • 缺点:只能执行小代码片段,使用的场景很受限制
  • 优点:使用方法简单,且因为stmt可以传函数,所以我们可以将部分简单的代码封装在函数里(比如接口响应时间测试),然后开始重复测试。

四、pyheat

  1. github网址
  2. 安装命令:pip3 install py-heat
  3. 功能:代码执行完毕后,会弹出一个热力图片用来展示每行代码的执行时间。
  4. 使用方式:
    - 命令行方式
pyheat <文件名> -
  • 代码方式:
    from pyheat import PyHeatph = PyHeat(<目标文件路径>)ph.create_heatmap()# To view the heatmap.ph.show_heatmap()# To output the heatmap as a file.ph.show_heatmap()
  1. 使用时的一些小细节:
  • 使用命令行方式时,业务代码里出现导自定义包的逻辑时,会报ModuleNotFoundError错,需要使用sys.path.append(<自定义包上层路径>)方法解决,原因是pyheat内部实际上调用pprofile来执行目标路径的代码,实际调用位置与使用pyheat的位置不同。
  • 只会展示最多两个图片:
    • 代码方式执行时:调用pyheat的文件 + pyheat调用的文件
    • 命令行方式执行时:pyheat调用的文件。
  • 个人评价
    • 虽然与matplotlib工具结合,可以以热力图的形式看到每行代码的调用时间,但也仅仅能看到调用时间,而且实际测试时发现结果并不准确,再加上导包问题,个人不推荐使用这个包。

五、heartrate

  1. github网址
  2. 安装命令:pip3 install heartrate
  3. 功能:可以在浏览器上实时查看每一行代码的调用次数,用颜色条的深浅和长度来区分最近调用情况和总体调用情况。
  4. 使用方式:
from heartrate import trace, files
trace(files=files.all, browser=True)
  1. 使用时的一些小细节:
  • 使用时应该把trace语句放在业务代码之前执行,可以是main方法里,也可以放在from heartrate import trace, files之后执行,因为只有执行了这个语句后才会在浏览器上看到接下来代码的调用情况。
  • 默认跟踪的代码是当前文件,可以在trace里的files参数里指定希望跟踪的文件。具体细节可以参考上方的github介绍。
  • trace里的host参数填充的是什么,打开浏览器时网址就应该填什么,例如代码里host参数填写的localhost,那浏览器上的网址写127.0.0.1就不可以。原因是源码里使用的Flask框架搭建的页面,其SERVER_NAME参数使用的是trace方法里所填hostport,没有做任何映射处理。
  • 运行代码后自动打开浏览器的条件:
    • 不填host参数或者host参数填写localhost127.0.0.1
    • browser参数填True
  • 个人评价
    • 比较好玩,想法与其他性能测试工具相比较为新颖,但只能查看调用次数,对于性能调优来说比较鸡肋。

六、Pycharm自带的Profiler工具

  1. 官方文档
  2. 这个工具只能在专业版使用,使用方法也很简单,就是可以使用Run/Debug运行的代码都可以使用Profiler运行,运行结束后会自动弹出性能检测结果,结果包括调用的方法/类/文件等耗时情况以及各函数调用关系图。这个关系图还是比较有用的。

七、objgraph工具

  1. 参考博客

八、profile和cProfile

  1. cProfile和profile功能相似,区别是profile是纯Python语言实现的,cProfile是C语言实现的。
  2. 官方文档
  3. profile和cProfile通常会和pstats内置模块连用,对分析结果进行更多的过滤操作。

Python性能测试工具汇总相关推荐

  1. linux硬件性能,Linux运维知识:Linux下的硬件性能测试工具汇总

    本文主要向大家介绍了Linux运维知识的Linux下的硬件性能测试工具汇总,通过具体的内容向大家展现,希望对的大家学习Linux运维知识有所帮助. 在购买计算机之后,我们都希望能充分了解它们的硬件性能 ...

  2. 直播性能测试工具汇总

    前言:因业务需求,需要对直播功能进行性能测试,在研究了多份资料之后,现将常用的工具汇总如下: st-load. SRS-Bench 一个GIT上的工具,适用于Linux环境,配置简单,工具很少被维护. ...

  3. Python性能测试工具Locust入门

    一.性能测试基础 1.性能测试该怎么做? 利用工具模拟真实用户操作. 2.性能测试基础: 性能:事物的性质和能效 -->效率性能 (时间/资源/容量) 思考:如何评价软件系统的性能? 快慢:衡量 ...

  4. python分析工具有哪些_常用Python数据分析工具汇总

    Python是数据处理常用工具,可以处理数量级从几K至几T不等的数据,具有较高的开发效率和可维护性,还具有较强的通用性和跨平台性.Python可用于数据分析,但其单纯依赖Python本身自带的库进行数 ...

  5. IE 中开发,兼容与性能测试工具汇总

    前言 对于开发者来说, IE的兼容性是最让人头疼的. 因为是微软的产品, 且绑定在操作系统上, 所以IE的占用率还是相当大, 对于开发者来说, 这部分的兼容的考虑就不可避免了. 对于IE 的各版本来说 ...

  6. python编写测试工具-python 写一个性能测试工具(一)

    国庆重新学习了一下go的gin高性能测试框架. 用JMeter来测试gin与flask接口的性能,差别很大. 为什么我自己不尝试写一个性能工具,性能工具的核心就是 并发 和 请求. 请求可以选择Pyt ...

  7. python 性能测试_python 写一个性能测试工具(一)

    国庆重新学习了一下go的gin高性能测试框架. 用JMeter来测试gin与flask接口的性能,差别很大. 为什么我自己不尝试写一个性能工具,性能工具的核心就是 并发 和 请求. 请求可以选择Pyt ...

  8. [雪峰磁针石博客]2018最佳12个开源或免费web服务器和客户端性能测试工具

    更多参考 软件测试专家工具包2性能测试 服务器端性能 image.png Locust.io – 了解服务器端性能的好工具. 语言python3.源码 python3+ python2.7+ gith ...

  9. python解题软件哪个好用_几个好用的Python数据分析工具

    原标题:几个好用的Python数据分析工具 ​常用的Python数据分析工具汇总! Python是数据处理常用工具,可以处理数量级从几K至几T不等的数据,具有较高的开发效率和可维护性,还具有较强的通用 ...

最新文章

  1. php时间区间,优化显示
  2. 企业经营私域运营的三大核心系列直播课
  3. 模态对话框阻塞主线程的话不影响其他线程操作主线程控件(不阻塞)
  4. java登录界面命令_Java命令行界面(第7部分):JCommander
  5. 学计算机的心理300字,心理的作文300字7篇
  6. 上海电子信息职业技术学院计算机网络技术,上海电子信息职业技术学院计算机网络技术专业...
  7. mysql 配置root密码_Mysql安装与配置调优及修改root密码的方法
  8. flask ai 简单语音对话
  9. 手机号码编码规则是什么?
  10. Apabi Reader for iOS正式发布 全面支持“苹果”(iPad/iPhone/iPod Touch)家族
  11. 一文了解全面静态代码分析
  12. PHP解密小程序加密信息
  13. InstallShield:an error occurred streaming issetup.dll...
  14. 面试---谈好工资不吃亏
  15. 呼叫中心静态座席的配置
  16. MySQL数据库冰人集团
  17. K8S之taint\cordon\uncordon\drain使用案例——筑梦之路
  18. Java基础数据类型以及取值范围
  19. 深度解读:云网融合的多云网络
  20. 【创业日记1】智慧旅游大数据服务平台项目-开始

热门文章

  1. EmptyWorkingSet和内存整理
  2. Java向word中插入Excel文件对象
  3. MIPI RFFE协议使用不完全指南(附上代码详解和参考资料)第一部分
  4. any, never, unknown的区别
  5. 公路多孔箱涵设计_新规范双孔箱涵结构设计
  6. python 三维度显示,Python实现高斯函数的三维显示方法
  7. 数据结构——树|N叉树之孩子双亲表示法——顺序存储结构+链表
  8. python实现视频音频同步
  9. Tuxedo-下载与安装1
  10. form表单中的onSubmit