网站样版风格排版,h5制作软件下载,做网站还有市场吗,一个网站如何推广Memray是一个由彭博社开发的、开源内存剖析器#xff1b;开源一个多月#xff0c;已经收获了超8.4k的star#xff0c;是名副其实的明星项目。今天我们就给大家来推荐这款python内存分析神器。 Memray可以跟踪python代码、本机扩展模块和python解释器本身中内存分配#…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 参数 作用 run 运行指定的应用程序并跟踪内存使用情况 flamegraph 在html报告中用火焰图方式显示内存使用情况 table 在html报告文件中用表格的方式显示内存分析情况 live 用实时屏幕显示方式显示各种内存使用情况 tree 在终端中用树形结构显示内存使用情况 parse 用debug模式显示每一行的内存使用情况 summary 汇总终端运行期间的内存使用概况 stats 在终端中非常详细的显示内存使用情况 run命令使用 python3 -m memray run --help 获取帮助 参数 作用 -o OUTPU,--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文件进行分析生成详细报告