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
如果你想学习性能测试,我这边给你推荐一套视频,这个视频可以说是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 获取帮助
参数 |
作用 |
-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 方式运行。
‘memray-py文件名.进程id.bin’ 文件,可以通过 python3 -m memray flamegraph memray-py文件名.进程id.bin 转换为一份html-火焰图报告
如上图,从上往下,显示了程序的调用过程,宽度,代表函数占用内存多少。
-
python3 -m memray run --native xxxx.py 会跟踪分析python代码中调用底层的C/C++函数消耗的内存情况
-
python3 -m memray run --trace-python-allocators xxx.py 跟踪分析python程序内存分配器pymalloc的情况
这个看上去,和没有加参数,效果差不多,但是,实际上是完全不一样的。这种方式,会深入跟踪内存分配,python常见的内存分配器有四种(malloc、free、realloc、pymalloc),这个参数,在python出现内存溢出时,就非常有用了。但是,加了这个参数,运输速度会变慢,收集的数据生成的文件会更大。
-
python3 -m memray run --live xxx.py 用实时屏幕模式显示跟踪的内存数据。
默认时,根据Total memory的数据从大到小,往下排列;按"O",可以根据私有内存从大到小,排序显示内存对象;按“A”,则根据内存分配次数量从高到底排序。
有了这个统计数据,就能快速定位到哪些对象,占用内存大,哪些对象被频繁的分配内存。这些对象,就是重点分析对象。
flamegraph命令---生成火焰图报告
-
python3 -m memray flamegraph --help 获取帮助
-
python3 -m memray flamegraph xxx.bin 生成火焰图
table命令--生成表格报告
-
python3 -m memray table --help 获取帮助
-
python3 -m memray table xxxx.bin 把bin文件转换为表格报告
tree命令--生成树形报告
-
python3 -m memray tree --help 获取帮助
-
python3 -m memray tree xxxx.bin 把bin文件转换为树形报告
summary命令--生成概要报告
-
python3 -m memray summary --help 获取帮助
-
python3 -m memray summary xxxx.bin 对bin文件进行分析,生成概要报告
stats命令---生成详细统计报告
-
python3 -m memray stats --help 获取帮助
-
python3 -m memray stats xxxx.bin 对bin文件进行分析,生成详细报告
文章来源:https://www.toymoban.com/news/detail-619168.html
到了这里,关于性能测试,python 内存分析工具 -memray的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!