Bloomberg发布的最新的memray——Python内存分析器是什么?

标签:#python##开源##性能提升# 时间:2022/04/21 08:58:47 作者:小木

Bloomberg在2022年4月开源了Memray,这是一个Python的内存分析器。它可以跟踪Python代码、本地扩展模块和Python解释器本身的内存分配情况。它可以生成几种不同类型的报告,帮助你分析捕获的内存使用数据。虽然通常作为CLI工具使用,但它也可以作为一个库来执行更细化的剖析任务。




这个库的特点:

  • 🕵️跟踪每个函数调用,所以它可以准确地表示调用堆栈,不像采样分析器不够准确。
  • ℭ 还能处理C/C++库中的本地调用,因此整个调用栈都会出现在结果中。
  • 🏎 速度极快! 剖析在应用程序中引起最小的减速。追踪本地代码会慢一些,但这可以根据需要启用或禁用。
  • 📈 它可以对收集的内存使用数据生成各种报告,如火焰图。
  • 🧵 与Python线程一起工作。
  • 👽🧵与本地线程(例如C++扩展中的线程)一起工作。



Memray可以帮助解决以下问题。

  • 分析应用程序中的分配,帮助发现高内存使用率的原因。
  • 查找内存泄漏。
  • 找到代码中导致大量(内存)分配的热点(hotspots)。
  • 注意,Memray只在Linux上工作,不能安装在其他平台上。

除了这些官方的优点,还有几个值得注意的内容:

1、完全开源,采用Apache 2协议,商业使用友好;
2、对于长时间运行的python代码尤其友好,可以深度分析分配的内存使用情况;
3、对于native代码的分析也很厉害,所以可以看numpy和pandas的运行情况,它还拥有live模式,直接观看内存的消耗情况

注意一点的是,正在运行的python代码是不可以追踪的,创作者认为这种情况看不到“回溯”的内存使用。所以目前还不支持这种模式。

GitHub地址:https://github.com/bloomberg/memray

欢迎大家关注DataLearner官方微信,接受最新的AI技术推送