Bloomberg heeft open source memray, een hulpmiddel voor het profileren van geheugen in Python-applicaties. Het programma houdt geheugentoewijzingsbewerkingen bij in Python en biedt een visuele interface voor het analyseren en optimaliseren van het geheugengebruik van verschillende delen van de code, evenals plug-ins geschreven in C/C++. Rapporten kunnen interactief worden gegenereerd of in HTML-formaat worden gegenereerd. Het bevat een CLI-interface voor het beheren van profilering en een bibliotheek die kan worden gebruikt om geheugenbewerkingen in projecten van derden bij te houden. De code wordt gepubliceerd onder de Apache 2.0-licentie. De werking wordt alleen ondersteund op het Linux-platform.
Belangrijkste kenmerken:
- Toepassingen: Identificeer redenen voor een hoog geheugengebruik in toepassingen, spoor geheugenlekken op en identificeer code die te veel geheugentoewijzingen uitvoert.
- Houdt alle functieaanroepen bij in relatie tot het totale geheugengebruik, het verbruik binnen de functie en het aantal geheugentoewijzingsbewerkingen. Mogelijkheid om de call-stack nauwkeurig in te schatten.
- Het verwerken van aanroepen naar bibliotheken in C/C++ en het bijhouden van het geheugengebruik in native modules. Ondersteuning voor het analyseren van projecten met numpy en panda's.
- Minimale overhead en verwaarloosbare impact op de prestaties van de geanalyseerde applicatie. Optie om het bijhouden van native code uit te schakelen om de prestaties te verbeteren.
- Beschikbaarheid van een groot aantal geheugengebruiksrapporten, inclusief visuele hiërarchische en laddergrafieken (vlamgrafiek).
- Mogelijkheid om met threads te werken en geheugen te analyseren in de context van individuele threads. Zowel Python-threads als native threads, zoals C++-threads die worden gebruikt in C/C++-modules, worden ondersteund.
- Mogelijkheid tot integratie met pytest en het aanbieden van pytest-annotaties die geheugenverbruikslimieten definiëren. Bij overschrijding worden waarschuwingen gegenereerd tijdens de uitvoering van de test.
Bron: opennet.ru