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

相关文章
|
12天前
|
人工智能 开发者 Python
Chainlit:一个开源的异步Python框架,快速构建生产级对话式 AI 应用
Chainlit 是一个开源的异步 Python 框架,帮助开发者在几分钟内构建可扩展的对话式 AI 或代理应用,支持多种工具和服务集成。
94 9
|
3月前
|
人工智能 API 开发工具
aisuite:吴恩达发布开源Python库,一个接口调用多个大模型
吴恩达发布的开源Python库aisuite,提供了一个统一的接口来调用多个大型语言模型(LLM)服务。支持包括OpenAI、Anthropic、Azure等在内的11个模型平台,简化了多模型管理和测试的工作,促进了人工智能技术的应用和发展。
201 1
aisuite:吴恩达发布开源Python库,一个接口调用多个大模型
|
4月前
|
存储 安全 Linux
【开源指南】用二叉树实现高性能共享内存管理
本文介绍了一种使用C++实现的共享内存管理方案,通过借鉴Android property的设计思路,采用二叉树结构存储键值对,提高了数据检索效率。该方案包括设置和获取接口,支持多进程/线程安全,并提供了一个简单的测试示例验证其有效性。
190 14
|
3月前
|
机器学习/深度学习 算法 编译器
Python程序到计算图一键转化,详解清华开源深度学习编译器MagPy
【10月更文挑战第26天】MagPy是一款由清华大学研发的开源深度学习编译器,可将Python程序一键转化为计算图,简化模型构建和优化过程。它支持多种深度学习框架,具备自动化、灵活性、优化性能好和易于扩展等特点,适用于模型构建、迁移、部署及教学研究。尽管MagPy具有诸多优势,但在算子支持、优化策略等方面仍面临挑战。
117 3
|
3月前
|
存储 算法 安全
FreeMQTT:一款Python语言实现的开源MQTT Server
FreeMQTT 是一款用 Python 语言并基于 Tornado 开发的开源 MQTT 服务器,支持 MQTT3.1.1 和 MQTT5.0 协议,提供多租户安全隔离、高效 Topic 匹配算法及实时上下线通知等功能,适用于 IoT 场景。快速启动仅需克隆仓库、安装依赖并运行服务。
|
3月前
|
存储 Linux 数据安全/隐私保护
一键部署 200+ 开源Github 2k+ 星星的软件
Websoft9面板是一款基于Web的PaaS/Linux面板,支持在个人服务器上一键部署200多种热门开源应用,适用于个人开发者、中小企业、创业团队、教育机构和技术爱好者。它集成了丰富的开源软件,提供便捷的部署方式、高效的资源利用、良好的可扩展性及低技术门槛,帮助用户快速搭建和管理各类应用。
|
4月前
|
编解码 人工智能 自然语言处理
MaskGCT:登上GitHub趋势榜榜首的TTS开源大模型
近日,香港中文大学(深圳)联手趣丸科技推出了新一代大规模声音克隆TTS模型——MaskGCT。一起看看该模型的一些表现吧!
|
5月前
|
Linux Android开发 iOS开发
开源的Python库,用于开发多点触控应用程序
Kivy是一款开源Python库,专为开发多点触控应用设计,支持Android、iOS、Linux、OS X和Windows等平台。本文将指导你使用Kivy创建“Hello World”应用并打包成Android APK。首先通过`pip install kivy`安装Kivy,然后创建并运行一个简单的Python脚本。接着,安装Buildozer并通过`buildozer init`生成配置文件,修改相关设置后,运行`buildozer -v android debug`命令打包应用。完成构建后,你将在`./bin/`目录下找到类似`your-app-debug.apk`的文件。
134 2
|
4月前
|
数据采集 应用服务中间件 Go
开源的键鼠共享工具「GitHub 热点速览」
开源的键鼠共享工具「GitHub 热点速览」
|
6月前
|
SQL JavaScript 前端开发
Github 2024-08-05 开源项目周报 Top15
根据 Github Trendings 的统计,本周(2024年8月5日统计)共有15个项目上榜。以下是根据开发语言汇总的项目数量: - Go 项目:4个 - JavaScript 项目:3个 - Python 项目:3个 - Java 项目:2个 - TypeScript 项目:2个 - C 项目:1个 - Shell 项目:1个 - Dockerfile 项目:1个 - 非开发语言项目:1个
199 2

热门文章

最新文章