Sobre el proyecto

Memray es un perfilador de memoria para Python diseñado para rastrear asignaciones de memoria a lo largo del código Python, módulos de extensión nativos (como C/C++) e incluso el propio intérprete de Python. Proporciona trazado detallado de la pila de llamadas para cada llamada a función, lo que permite una atribución precisa del uso de memoria —a diferencia de los perfiladores por muestreo. Admite tanto uso mediante CLI como como biblioteca, lo que lo hace flexible para diferentes escenarios de profiling. Las capacidades clave incluyen: - Trazar todas las llamadas a funciones con representación completa de la pila de llamadas. - Perfilado de código C/C++ nativo dentro de extensiones de Python (por ejemplo, numpy, pandas) mediante la bandera opcional --native. - Generación de múltiples tipos de informes: gráficos de llama (HTML), tablas, vistas de árbol, monitoreo en vivo en terminal, resúmenes y estadísticas. - Soporte para hilos de Python y hilos nativos (por ejemplo, de extensiones C++). - Rendimiento rápido: retraso mínimo durante el perfilado; el seguimiento nativo puede activarse/desactivarse según la velocidad frente al detalle. - Integración con pytest mediante el plugin pytest-memray para pruebas automáticas de memoria y límites. - Modo en vivo: TUI interactivo para inspección de memoria en tiempo real durante scripts de larga ejecución. - API programable: usar el administrador de contexto memray.Tracker() para perfilares bloques específicos de código de manera programática. La instalación requiere Python 3.9+ y está disponible mediante pip o conda. Se proporcionan binarios precompilados (wheels) para Linux x86/x64 y macOS; las compilaciones desde código fuente requieren dependencias del sistema como libunwind y liblz4. La documentación y ejemplos se encuentran en https://bloomberg.github.io/memray/. Memray ayuda a identificar alto uso de memoria, fugas de memoria y puntos calientes de asignación. No soporta Windows ni otras plataformas. El proyecto tiene licencia Apache-2.0 y acepta contribuciones de la comunidad siguiendo el requisito de DCO sign-off.