Sobre o projeto
O Memray é um profiler de memória para Python, projetado para rastrear alocações de memória em código Python, módulos de extensão nativa (como C/C++) e até no próprio interpretador Python. Ele fornece rastreamento detalhado da pilha de chamadas para cada chamada de função, permitindo atribuição precisa do uso de memória — diferentemente dos profilers baseados em amostragem. Suporta tanto uso via CLI quanto como biblioteca, tornando-o flexível para diferentes cenários de profiling.
Principais capacidades incluem:
- Rastreamento de todas as chamadas de função com representação completa da pilha de chamadas.
- Profiling de código nativo C/C++ dentro de extensões Python (por exemplo, numpy, pandas) por meio da flag opcional --native.
- Geração de múltiplos tipos de relatório: grafos de chama (HTML), tabelas, visualizações em árvore, monitoramento em tempo real no terminal, resumos e estatísticas.
- Suporte a threads Python e threads nativas (por exemplo, de extensões C++).
- Desempenho rápido: lentidão mínima durante o profiling; o rastreamento nativo pode ser ativado/desativado conforme a necessidade entre velocidade e detalhamento.
- Integração com pytest por meio do plugin pytest-memray para testes automatizados de memória e limites.
- Modo live: TUI interativo para inspeção de memória em tempo real durante scripts de longa execução.
- API programável: use o gerenciador de contexto memray.Tracker() para fazer profiling de blocos específicos de código programaticamente.
A instalação requer Python 3.9+ e está disponível via pip ou conda. Wheels binários são fornecidos para Linux x86/x64 e macOS; builds a partir do fonte exigem dependências do sistema como libunwind e liblz4. A documentação e exemplos estão disponíveis em https://bloomberg.github.io/memray/.
O Memray ajuda a identificar alto uso de memória, vazamentos de memória e pontos quentes de alocação. Não suporta Windows ou outras plataformas. O projeto é licenciado sob Apache-2.0 e acolhe contribuições da comunidade seguindo o sign-off DCO.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.