À 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.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.