À propos du projet

Memray est un profileur de mémoire pour Python conçu pour suivre les allocations mémoire à travers le code Python, les modules d'extension natifs (comme C/C++) et même l'interpréteur Python lui-même. Il fournit un traçage détaillé de la pile d'appels pour chaque appel de fonction, permettant une attribution précise de l'utilisation mémoire — contrairement aux profileurs par échantillonnage. Il prend en charge à la fois une utilisation via ligne de commande et via bibliothèque, ce qui le rend flexible pour différents scénarios de profiling. Ses principales capacités incluent : - Traçage de tous les appels de fonction avec une représentation complète de la pile d'appels. - Profil du code natif C/C++ au sein des extensions Python (par exemple numpy, pandas) via l'option --native. - Génération de plusieurs types de rapports : graphes en flammes (HTML), tableaux, vues arborescentes, surveillance en direct dans le terminal, résumés et statistiques. - Support des threads Python et des threads natifs (par exemple issus d'extensions C++). - Performances rapides : ralentissement minimal pendant le profilage ; le suivi natif peut être activé ou désactivé pour ajuster la vitesse versus le niveau de détail. - Intégration avec pytest via le plugin pytest-memray pour des tests mémoire automatisés et des seuils. - Mode interactif (live mode) : interface textuelle interactive (TUI) pour l'inspection mémoire en temps réel lors de l'exécution de scripts longs. - API programmatique : utilisation du gestionnaire de contexte memray.Tracker() pour profiler des blocs de code spécifiques de manière programmatique. L'installation nécessite Python 3.9+ et est disponible via pip ou conda. Des wheels binaires sont fournis pour Linux x86/x64 et macOS ; les builds depuis les sources nécessitent des dépendances système comme libunwind et liblz4. La documentation et des exemples sont hébergés à l'adresse https://bloomberg.github.io/memray/. Memray aide à identifier les fortes utilisations mémoire, les fuites mémoire et les points chauds d'allocation. Il ne prend pas en charge Windows ni d'autres plateformes. Le projet est sous licence Apache-2.0 et accueille les contributions de la communauté suivant le processus DCO.