Об этом проекте

Memray — профайлер памяти для Python, предназначенный для отслеживания распределения памяти в коде Python, нативных расширений (например, C/C++) и даже внутри самого интерпретатора Python. Он обеспечивает детальный трекинг стека вызовов для каждого обращения к функции, позволяя точно атрибутировать использование памяти — в отличие от профайлеров выборочного сэмплирования. Поддерживает как CLI, так и библиотеку, что делает его гибким для различных сценариев профилирования. Ключевые возможности: - Трекинг всех вызовов функций с полным представлением стека вызовов. - Профилирование нативного C/C++ кода внутри расширений Python (например, numpy, pandas) с помощью опционального флага --native. - Генерация нескольких типов отчётов: flame graphs (HTML), таблицы, древовидные представления, мониторинг в реальном времени в терминале, сводки и статистика. - Поддержка потоков Python и нативных потоков (например, из расширений C++). - Высокая производительность: минимальное замедление во время профилирования; нативный трекинг можно включать/выключать для балансировки скорости и детализации. - Интеграция с pytest через плагин pytest-memray для автоматического тестирования памяти и установки лимитов. - Live mode: интерактивный TUI для инспекции памяти в реальном времени во время выполнения долгоживущих скриптов. - Программируемый API: использование контекстного менеджера memray.Tracker() для профилирования конкретных участков кода. Установка требует Python 3.9+ и доступна через pip или conda. Бинарные wheel-пакеты предоставлены для Linux x86/x64 и macOS; сборка из исходников требует системных зависимостей, таких как libunwind и liblz4. Документация и примеры размещены на https://bloomberg.github.io/memray/. Memray помогает выявлять высокое потребление памяти, утечки памяти и горячие точки распределения. Проект не поддерживает Windows или другие платформы. Проект распространяется под лицензией Apache-2.0 и приветствует вклад сообщества при условии подписания DCO.