Repolode
bloomberg

bloomberg/memray

Профилировщик памяти для Python: отслеживает выделения памяти в Python-коде, нативных расширениях и интерпретаторе и формирует отчёты нескольких типов.

Звёзды
15,389
Форки
480
Открытые issues
37
Последний коммит
позавчера

Что это?

Memray — профилировщик памяти для Python. Он записывает выделения памяти, выполняемые Python-кодом, нативными модулями расширения на C/C++ и самим интерпретатором Python, а затем формирует отчёты: flame graph, таблицы, деревья и сводки в терминале. Обычно его запускают как инструмент командной строки с помощью `memray run`, но его также можно использовать как библиотеку через контекстный менеджер Tracker.

В отличие от профилировщиков с семплированием, Memray отслеживает каждый вызов функции, поэтому стеки вызовов записываются точно. Нативное отслеживание включается отдельно с помощью `--native` и добавляет в результаты фреймы C/C++, что полезно при работе с такими расширениями, как numpy и pandas. Режим реального времени показывает выделения памяти в интерфейсе терминала, пока программа работает, а attach позволяет начать отслеживание уже запущенного процесса.

Memray помогает решать распространённые проблемы с памятью: находить код, из-за которого растёт потребление памяти, выявлять утечки и определять участки, активно выделяющие память. Он поддерживает потоки Python и нативные потоки. Работает только на Linux и macOS и требует Python 3.9 или новее. Плагин pytest-memray доступен как отдельный проект.

Ключевые возможности

  • 01Отслеживает каждый вызов функции для точного восстановления стеков вызовов, в отличие от профилировщиков с семплированием
  • 02Отслеживает выделения памяти в Python-коде и нативных расширениях на C/C++ с помощью `--native`
  • 03Формирует flame graph, HTML-таблицы, деревья и сводки в терминале
  • 04Интерфейс терминала для просмотра выделений памяти в реальном времени, пока программа работает
  • 05Позволяет подключиться к уже запущенному процессу Python
  • 06Можно использовать как библиотеку Python через контекстный менеджер Tracker

Сценарии использования

  • Поиск причин высокого потребления памяти в сервисе или скрипте на Python
  • Выявление утечек памяти в долго работающих приложениях
  • Поиск участков кода, активно выделяющих память
  • Профилирование программ на Python, использующих такие расширения на C, как numpy и pandas

Быстрый старт

  1. 1

    Установите Memray из PyPI с помощью pip

    python3 -m pip install memray
  2. 2

    Запустите скрипт с профилировщиком, чтобы записать выделения памяти

    python3 -m memray run my_script.py
  3. 3

    Создайте HTML-график «пламя» по файлу с результатами

    memray flamegraph memray-my_script.py.2369.bin

Что важно знать

  • Работает только в Linux и macOS; установить программу в Windows нельзя.
  • Для сборки из исходного кода требуются системные библиотеки, такие как libunwind, lz4 и libdebuginfod.

Темы

Частые вопросы

Что такое memray?
Профилировщик памяти для Python: отслеживает выделения памяти в Python-коде, нативных расширениях и интерпретаторе и формирует отчёты нескольких типов. Memray — профилировщик памяти для Python. Он записывает выделения памяти, выполняемые Python-кодом, нативными модулями расширения на C/C++ и самим интерпретатором Python, а затем формирует отчёты: flame graph, таблицы, деревья и сводки в терминале. Обычно его запускают как инструмент командной строки с помощью `memray run`, но его также можно использовать как библиотеку через контекстный менеджер Tracker.
memray можно использовать бесплатно? Какая у него лицензия?
memray распространяется с открытым исходным кодом под лицензией Apache-2.0. Перед использованием в коммерческих продуктах проверьте условия лицензии.
memray всё ещё поддерживается?
Активно поддерживается. Последний коммит в memray — 19 окт. 2026 г..
Для чего можно использовать memray?
Поиск причин высокого потребления памяти в сервисе или скрипте на Python Выявление утечек памяти в долго работающих приложениях Поиск участков кода, активно выделяющих память Профилирование программ на Python, использующих такие расширения на C, как numpy и pandas
Как установить memray?
Установите Memray из PyPI с помощью pip: python3 -m pip install memray Запустите скрипт с профилировщиком, чтобы записать выделения памяти: python3 -m memray run my_script.py Создайте HTML-график «пламя» по файлу с результатами: memray flamegraph memray-my_script.py.2369.bin
Где скачать memray?
Исходный код и инструкции по установке — на GitHub: https://github.com/bloomberg/memray

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты

Платформа автоматизации умного дома с открытым исходным кодом: работает локально и ставит во главу угла контроль и приватность, часто — на Raspberry Pi или локальном сервере.

91,6 тыс.39 тыс.PythonApache-2.0Обновлён 9 часов назад