Github 标星 5.2K+!bloomberg 开源 Python 内存分析器“Memray”

简介: Github 标星 5.2K+!bloomberg 开源 Python 内存分析器“Memray”

近日,bloomberg 开源了一项 Python 内存分析器 ——“Memray”。目前,该项目在 Github 上已获得了 5.2K stars,热度不错。

image.png

Memray 是一款 Python 的内存分析器,可跟踪 Python 代码、本机扩展模块和 Python 解释器本身中的内存分配。可生成几种不同类型的报告,以帮助分析捕获的内存使用情况数据。通常用作CLI工具,也可用作库来执行更细粒度的分析任务。

image.png

主要特点:

  • 跟踪每个函数调用,以便它能够准确地表示调用堆栈,与采样分析器不同。
  • 处理C/C++库中的本机调用,整个调用堆栈都出现在结果中。
  • 高速!分析会使应用程序的速度降到最低。跟踪本机代码的速度稍慢,可根据需要启用或禁用。
  • 可生成有关收集的内存使用数据的各种报告,如 flame graphs。
  • 使用 Python 线程。
  • 与本地线程(如 C 扩展中的 C++ 线程)一起工作。

Memray 可帮助解决以下问题:

  • 分析应用程序中的分配,以帮助发现高内存使用率的原因。
  • 查找内存泄漏。
  • 查找导致大量分配的代码热点。

值得注意的是,Memray仅在Linux上工作,不能安装在其他平台上。

安装

Memray 需要使用 Python 3.7+ 版本,且可以使用最常用的 Python 打包工具轻松安装。建议使用 pip 安装 PyPI 的最新稳定版本:

python3 -m pip install memray

请注意,Memray 包含一个 C 扩展,因此发行版和源代码都以二进制代码的形式分发。如果您的系统(Linux x86/x64)没有可用的二进制控制盘,则需要确保安装的系统满足所有依赖项。

用法

有很多方法可以使用 Memray。最简单的方法是将其用作命令行工具来运行脚本、应用程序或库。

usage: memray [-h] [-v] {run,flamegraph,table,live,tree,parse,summary,stats} ...

Python 应用程序的内存分析器

运行“memray Run”生成内存配置文件报告,然后使用 reporter 命令

例如“memray flamegraph”或“memray table”,将结果转换为 HTML。

image.png

原生模式

Memray 支持跟踪原生 C/C++ 函数和 Python 函数。在分析具有 C 扩展的应用程序(如 numpy 或 pandas)时,这一点尤其有用,因为这样可以全面了解扩展分配了多少内存,以及 Python 本身分配了多少内存。

要激活本机跟踪,在使用 run 子命令时需要提供--native 参数:

memray run --native my_script.py

这将自动将本机信息添加到结果文件中,任何报告程序(如 flamegraph 或 table reporters)都将自动使用它。

image.png

报告器以不同于 Python 帧的颜色显示本机帧,还通过查看框架中的文件位置来区分它们(Python框架通常由扩展名为.py的文件生成,而本机框架则由扩展名为.c、.cpp或.h的文件生成)。

Live mode

Memray 的 Live mode 在基于终端的界面中运行脚本或模块,允许您在运行时以交互方式检查其内存使用情况。这对于调试需要很长时间才能运行或呈现多种复杂内存模式的脚本或模块非常有用。

相关文章
|
11月前
|
人工智能 自然语言处理 数据可视化
中国版“Manus”开源?AiPy:用Python重构AI生产力的通用智能体
AiPy是LLM大模型+Python程序编写+Python程序运行+程序可以控制的一切。
|
7月前
|
存储 大数据 Unix
Python生成器 vs 迭代器:从内存到代码的深度解析
在Python中,处理大数据或无限序列时,迭代器与生成器可避免内存溢出。迭代器通过`__iter__`和`__next__`手动实现,控制灵活;生成器用`yield`自动实现,代码简洁、内存高效。生成器适合大文件读取、惰性计算等场景,是性能优化的关键工具。
356 2
|
8月前
|
传感器 数据采集 监控
Python生成器与迭代器:从内存优化到协程调度的深度实践
简介:本文深入解析Python迭代器与生成器的原理及应用,涵盖内存优化技巧、底层协议实现、生成器通信机制及异步编程场景。通过实例讲解如何高效处理大文件、构建数据流水线,并对比不同迭代方式的性能特点,助你编写低内存、高效率的Python代码。
313 0
|
9月前
|
数据采集 编解码 人工智能
Gemma 3n正式版开源:谷歌全新端侧多模态大模型,2GB 内存就能跑,重点提升编码和推理能力!
6月底,Google正式开源发布了全新端侧多模态大模型 Gemma 3n!相较此前的预览版,最新的 Gemma 3n 完整版进一步提升性能表现,支持在 2GB 内存的硬件上本地运行,重点提升了编码和推理方面的能力。
1055 1
|
12月前
|
程序员 测试技术 开发工具
怎么开发Python第三方库?手把手教你参与开源项目!
大家好,我是程序员晚枫。本文将分享如何开发Python第三方库,并以我维护的开源项目 **popdf** 为例,指导参与开源贡献。Popdf是一个PDF操作库,支持PDF转Word、转图片、合并与加密等功能。文章涵盖从fork项目、本地开发、单元测试到提交PR的全流程,适合想了解开源贡献的开发者。欢迎访问[popdf](https://gitcode.com/python4office/popdf),一起交流学习!
363 21
怎么开发Python第三方库?手把手教你参与开源项目!
|
11月前
|
数据可视化 Linux iOS开发
Python测量CPU和内存使用率
这些示例帮助您了解如何在Python中测量CPU和内存使用率。根据需要,可以进一步完善这些示例,例如可视化结果或限制程序在特定范围内的资源占用。
417 22
|
人工智能 程序员 测试技术
我的开源项目达成1000 star里程碑!python-office招募开源小伙伴
大家好,这里是程序员晚枫。我的首个开源项目 **python-office** 在GitHub上达到了1000星!该项目始于2022年初,旨在帮助更多人快速入门Python。历经多个里程碑,包括被开源中国推荐、发布官网和操作视频等。目前下载量已达26万+,并被评为GitCode毕业项目。未来计划包括统一代码风格、增加功能、完善文档和单元测试,以及招募开源小伙伴共同维护。欢迎感兴趣的朋友私信我:**开源**。 ![Stargazers over time](https://starchart.cc/CoderWanFeng/python-office.svg)
271 11
我的开源项目达成1000 star里程碑!python-office招募开源小伙伴
|
监控 Java 计算机视觉
Python图像处理中的内存泄漏问题:原因、检测与解决方案
在Python图像处理中,内存泄漏是常见问题,尤其在处理大图像时。本文探讨了内存泄漏的原因(如大图像数据、循环引用、外部库使用等),并介绍了检测工具(如memory_profiler、objgraph、tracemalloc)和解决方法(如显式释放资源、避免循环引用、选择良好内存管理的库)。通过具体代码示例,帮助开发者有效应对内存泄漏挑战。
673 1
|
人工智能 开发者 Python
Chainlit:一个开源的异步Python框架,快速构建生产级对话式 AI 应用
Chainlit 是一个开源的异步 Python 框架,帮助开发者在几分钟内构建可扩展的对话式 AI 或代理应用,支持多种工具和服务集成。
1733 9
|
缓存 监控 算法
Python内存管理:掌握对象的生命周期与垃圾回收机制####
本文深入探讨了Python中的内存管理机制,特别是对象的生命周期和垃圾回收过程。通过理解引用计数、标记-清除及分代收集等核心概念,帮助开发者优化程序性能,避免内存泄漏。 ####
442 35

推荐镜像

更多