性能测试,python 内存分析工具 -memray

这篇具有很好参考价值的文章主要介绍了性能测试,python 内存分析工具 -memray。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Memray是一个由彭博社开发的、开源内存剖析器;开源一个多月,已经收获了超8.4k的star,是名副其实的明星项目。今天我们就给大家来推荐这款python内存分析神器。

Memray可以跟踪python代码、本机扩展模块和python解释器本身中内存分配,可以生成多种不同类型的报告,帮助您分析python代码内存使用情况。

工具的主要特点:

  • 跟踪每个函数的调用,能够准确的跟踪调用栈

  • 能跟踪c/c++库的调用

  • 分析速度很快

  • 收集内存数据,输出各种图标

  • 使用python线程

  • 与本地线程一起工作

可以帮助解决的问题:

  • 分析应用程序中内存分配,发现高内存使用率的原因

  • 查找内存泄漏的原因

  • 查找导致内存大量分配的代码热点

►►►

memray安装

  • 环境要求:python3.7+以上版本,linux系统(仅支持linux系统)

  • 安装:pip3 install memray

memray使用

memray使用帮助

python3 -m memray --help

性能测试,python 内存分析工具 -memray,python,开发语言,职场和发展,软件测试,压力测试,网络协议

如果你想学习性能测试,我这边给你推荐一套视频,这个视频可以说是B站播放全网第一的性能测试教程,同时在线人数到达1000人,并且还有笔记可以领取及各路大神技术交流:798478386     

15天学会性能测试,通俗易懂详细教学,Jmeter性能测试实战(集群压测,全链路压测,性能调优,瓶颈分析)极速掌握,干就完事!_哔哩哔哩_bilibili15天学会性能测试,通俗易懂详细教学,Jmeter性能测试实战(集群压测,全链路压测,性能调优,瓶颈分析)极速掌握,干就完事!共计27条视频,包括:1.【性能测试】什么是性能测试以及性能测试的价值和目的、2.【性能测试】真实企业性能测试指标详解以及指标测算、3.【性能测试】真实企业中性能测试流程以及细节剖析等,UP主更多精彩视频,请关注UP账号。https://www.bilibili.com/video/BV1B14y1D7X9/?spm_id_from=333.337.search-card.all.click 

参数

作用

run

运行指定的应用程序并跟踪内存使用情况

flamegraph    

在html报告中,用火焰图方式,显示内存使用情况

table

在html报告文件中,用表格的方式显示内存分析情况

live

用实时屏幕显示方式,显示各种内存使用情况

tree

在终端中,用树形结构显示内存使用情况

parse

用debug模式,显示每一行的内存使用情况

summary

汇总终端运行期间的内存使用概况

stats

在终端中非常详细的显示内存使用情况

 文章来源地址https://www.toymoban.com/news/detail-619168.html

run命令使用

  • python3 -m memray run --help 获取帮助

性能测试,python 内存分析工具 -memray,python,开发语言,职场和发展,软件测试,压力测试,网络协议

参数

作用

-oOUTPU,--output OUTPUT

指定输出结果到哪里

--live

启动实时跟踪会话模式

--live-remote

启动实时跟踪会话并等待客户端连接

--live-port LIVE_PORT, 

-p LIVE_PORT

启动实时跟踪时要使用的端口

--native

跟踪C/C++堆栈

--follow-fork

跟踪脚本分叉的子进程中的分配

--trace-python-allocators

记录pymalloc分配器的分配情况

-q, --quiet

运行时不显示任何特定于跟踪的输出

-f, --force

强制复购已有文件

--compress-on-exit

跟踪完成后使用 lz4 压缩生成的文件

--no-compress

不使用 lz4 压缩生成的文件

-c

作为字符串传入的程序

-m

将库模块作为脚本运行

 

  • python3 -m memray run xxx.py  直接分析某个py文件的内存使用情况,就会在当前路径下生成一个 ‘memray-py文件名.进程id.bin’ 的内存使用记录文件。当然,也可以跟上-o outFiPath 指定输出路径。如果运行的py文件是模块代码,也可以使用-m xxx.py 方式运行。

性能测试,python 内存分析工具 -memray,python,开发语言,职场和发展,软件测试,压力测试,网络协议

‘memray-py文件名.进程id.bin’ 文件,可以通过 python3 -m memray flamegraph memray-py文件名.进程id.bin 转换为一份html-火焰图报告

性能测试,python 内存分析工具 -memray,python,开发语言,职场和发展,软件测试,压力测试,网络协议

如上图,从上往下,显示了程序的调用过程,宽度,代表函数占用内存多少。

  • python3 -m memray run --native xxxx.py 会跟踪分析python代码中调用底层的C/C++函数消耗的内存情况

性能测试,python 内存分析工具 -memray,python,开发语言,职场和发展,软件测试,压力测试,网络协议

性能测试,python 内存分析工具 -memray,python,开发语言,职场和发展,软件测试,压力测试,网络协议

  • python3 -m memray run --trace-python-allocators xxx.py 跟踪分析python程序内存分配器pymalloc的情况

性能测试,python 内存分析工具 -memray,python,开发语言,职场和发展,软件测试,压力测试,网络协议

性能测试,python 内存分析工具 -memray,python,开发语言,职场和发展,软件测试,压力测试,网络协议

这个看上去,和没有加参数,效果差不多,但是,实际上是完全不一样的。这种方式,会深入跟踪内存分配,python常见的内存分配器有四种(malloc、free、realloc、pymalloc),这个参数,在python出现内存溢出时,就非常有用了。但是,加了这个参数,运输速度会变慢,收集的数据生成的文件会更大。

  • python3 -m memray run --live xxx.py 用实时屏幕模式显示跟踪的内存数据。

性能测试,python 内存分析工具 -memray,python,开发语言,职场和发展,软件测试,压力测试,网络协议

默认时,根据Total memory的数据从大到小,往下排列;按"O",可以根据私有内存从大到小,排序显示内存对象;按“A”,则根据内存分配次数量从高到底排序。

有了这个统计数据,就能快速定位到哪些对象,占用内存大,哪些对象被频繁的分配内存。这些对象,就是重点分析对象。

flamegraph命令---生成火焰图报告

  • python3 -m memray flamegraph --help 获取帮助

性能测试,python 内存分析工具 -memray,python,开发语言,职场和发展,软件测试,压力测试,网络协议

  • python3 -m memray flamegraph xxx.bin 生成火焰图

table命令--生成表格报告

  • python3 -m memray table --help 获取帮助

  • python3 -m memray table xxxx.bin 把bin文件转换为表格报告

性能测试,python 内存分析工具 -memray,python,开发语言,职场和发展,软件测试,压力测试,网络协议

tree命令--生成树形报告

  • python3 -m memray tree --help 获取帮助

  • python3 -m memray tree xxxx.bin 把bin文件转换为树形报告

性能测试,python 内存分析工具 -memray,python,开发语言,职场和发展,软件测试,压力测试,网络协议

summary命令--生成概要报告

  • python3 -m memray summary --help 获取帮助

  • python3 -m memray summary xxxx.bin 对bin文件进行分析,生成概要报告

性能测试,python 内存分析工具 -memray,python,开发语言,职场和发展,软件测试,压力测试,网络协议

stats命令---生成详细统计报告

  • python3 -m memray stats --help 获取帮助

  • python3 -m memray stats xxxx.bin 对bin文件进行分析,生成详细报告

性能测试,python 内存分析工具 -memray,python,开发语言,职场和发展,软件测试,压力测试,网络协议

 

到了这里,关于性能测试,python 内存分析工具 -memray的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python性能测试工具Locust入门

    1、性能测试该怎么做? 利用工具模拟真实用户操作。 2、性能测试基础: 性能:事物的性质和能效 --效率性能 (时间/资源/容量) 思考:如何评价软件系统的性能? 快慢:衡量系统的处理效率 (响应时间) 多少:衡量系统的处理能力(单位时间内,能处理多少个事物) 3、性

    2024年02月07日
    浏览(43)
  • 十款开源测试开发工具推荐(自动化、性能、混沌测试、造数据、流量复制)

    在本篇文章中,我将给大家推荐 10 款日常工作中经常用到的测试开发工具神器,涵盖了自动化测试、性能压测、流量复制、混沌测试、造数据等。 AutoMeter 是一款针对分布式服务,微服务 API 做功能和性能一体化的自动化测试平台,一站式提供发布单元,API,环境,用例,前

    2024年02月15日
    浏览(44)
  • OpenHarmony实战开发-性能测试工具SmartPerf Editor使用指导

    SmartPerf Editor是一款PC端桌面应用,通过监测、采集应用运行时FPS、CPU、GPU、Memory、Battery、Network等性能数据,帮助开发者了解应用的性能状况。SmartPerf Editor还集成了DrawingDoc功能,可录制Render Service绘制指令,回放并生成不同图形库文件。通过逐帧逐绘制指令回放,来识别是否

    2024年04月28日
    浏览(27)
  • 性能最快的代码分析工具,Ruff 正在席卷 Python 圈!

    几天前,Python 开源社区又出了一个不小的新闻:HTTPX 和 Starlette 在同一天将在用的代码分析工具(flake8、autoflake 和 isort)统一替换成了 Ruff。 HTTPX 是一个支持异步的 HTTP 客户端,Starlette 是一个轻量级的 ASGI 框架,它们都是 Python 社区里的明星项目,目前加起来有近 20K star。它

    2023年04月09日
    浏览(67)
  • 【墙裂推荐!】十款开源测试开发工具(自动化、性能、造数据、流量复制)​

    目录 1、AutoMeter-API 自动化测试平台 2、QA Wolf 浏览器自动化测试工具 3、Mimesis 用于 Python 的高性能虚假数据生成器 4、Ddosify 高性能负载测试工具 5、AutoCannon HTTP/1.1 基准测试工具 6、Sharingan 流量录制回放工具 7、randdata 随机测试数据生成工具 8、DrissionPage WEB 自动化测试集成工具

    2024年02月06日
    浏览(33)
  • 4个python内存性能检测工具:memory_profiler、timeit、line_profiler、heartrate的使用案例

    这里总结了4个比较好的python性能检测工具,包括内存使用、运行时间、执行次数等方面。 1、memory_profiler查看内存的使用情况 memory_profiler可以用来测量python进程的内存使用情况。可以按行查看内存的使用情况。 memory_profiler 是一个监控进程内存消耗的模块,可以逐行分析 Py

    2024年02月01日
    浏览(29)
  • Linux性能优化--性能工具:系统内存

    本章概述了系统级的Linux内存性能工具。本章将讨论这些工具可以测量的内存统计信息,以及如何使用各种工具收集这些统计结果。阅读本章后,你将能够: 理解系统级性能的基本指标,包括内存的使用情况。 明白哪些工具可以检索这些系统级性能指标。 每一种系统级Linu

    2024年02月07日
    浏览(25)
  • Linux性能优化--性能工具:特定进程内存

    本章介绍的工具使你能诊断应用程序与内存子系统之间的交互,该子系统由Linux内核和CPU管理。由于内存子系统的不同层次在性能上有数量级的差异,因此,修复应用程序使其有效地使用内存子系统会对程序性能产生巨大的影响。 阅读本章后,你将能够: 确定一个应用程序使

    2024年02月07日
    浏览(27)
  • 【Python】从同步到异步多核:测试桩性能优化,加速应用的开发和验证

    目录 测试工作中常用到的测试桩mock能力 应用场景 简单测试桩 http.server扩展:一行命令实现一个静态文件服务器 性能优化:使用异步响应 异步响应 能优化:利用多核 gunicorn 安装 gunicorn 使用 gunicorn 启动服务 性能优化:使用缓存(functools.lru_cache)。 单元测试中的mock Python

    2024年02月14日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包