30.06.2022

Bloomberg открыл код memray, инструмента профилирования памяти для Python

Компания Bloomberg открыла исходные тексты memray, инструментария для профилирования памяти в приложениях на языке Python. Программа отслеживает операции выделения памяти в Python и предлагает наглядный интерфейс для анализа и оптимизации потребления памяти различными участками кода, а также подключаемыми модулями, написанными на C/C++. Отчёты могут формироваться как в интерактивной форме, так и генерироваться в формате HTML. В состав входит CLI-интерфейс для управления профилированием и библиотека, которую можно использовать для отслеживания операций с памятью в сторонних проектах. Код опубликован под лицензией Apache 2.0. Работа поддерживается только на платформе Linux.

Основные возможности:

  • Области применения: выявление причин большого потребления памяти в приложениях, поиск утечек памяти и определение кода, выполняющего слишком много операций выделения памяти.
  • Отслеживание всех вызовов функций в привязке к общему потреблению памяти, потреблению внутри функции и числу операций выделения памяти. Возможность точной оценки стека вызовов.
  • Обработка обращений к библиотекам на C/C++ и учёт потребления памяти в нативных модулях. Поддержка анализа проектов, использующих numpy и pandas.
  • Минимальные накладные расходы и незначительное влияние на производительность анализируемого приложения. Возможность отключения отслеживания нативного кода для повышения производительности.
  • Наличие большого числа отчётов об использовании памяти, включая наглядные иерархические и ступенчатые графики (flame graph).
  • Возможность работы с потоками и анализа памяти в разрезе отдельных потоков. Поддерживаются как потоки Python, так и нативные потоки, такие как C++ threads, применяемые в модулях на C/C++.
  • Возможность интеграции с pytest и предоставление аннотаций pytest, определяющих рамки потребления памяти, при выходе за которые в процессе выполнения тестов будут формироваться предупреждения.


Источник.