Bloomberg har öppna källkod memray, ett verktyg för profilering av minne i Python-applikationer. Programmet spårar minnesallokeringsoperationer i Python och erbjuder ett visuellt gränssnitt för att analysera och optimera minnesförbrukningen för olika kodsektioner, samt plugin-program skrivna i C/C++. Rapporter kan genereras antingen interaktivt eller genereras i HTML-format. Den innehåller ett CLI-gränssnitt för att hantera profilering och ett bibliotek som kan användas för att spåra minnesoperationer i tredjepartsprojekt. Koden publiceras under Apache 2.0-licensen. Drift stöds endast på Linux-plattformen.
Viktiga funktioner:
- Applikationer: Identifiera orsaker till hög minnesförbrukning i applikationer, hitta minnesläckor och identifiera kod som utför för många minnesallokeringar.
- Spårar alla funktionsanrop i förhållande till total minnesförbrukning, förbrukning inom funktionen och antalet minnesallokeringsoperationer. Möjlighet att exakt uppskatta samtalsstacken.
- Bearbetar anrop till bibliotek i C/C++ och tar hänsyn till minnesförbrukning i inbyggda moduler. Stöd för att analysera projekt med hjälp av numpy och pandor.
- Minimal omkostnad och försumbar påverkan på den analyserade applikationens prestanda. Möjlighet att inaktivera inbyggd kodspårning för att förbättra prestandan.
- Tillgänglighet för ett stort antal minnesanvändningsrapporter, inklusive visuella hierarkiska grafer och stegdiagram (flame graph).
- Förmåga att arbeta med trådar och analysera minne i samband med enskilda trådar. Både Python-trådar och inbyggda trådar, såsom C++-trådar som används i C/C++-moduler, stöds.
- Möjlighet till integration med pytest och tillhandahållande av pytest-kommentarer som definierar minnesförbrukningsgränser, om de överskrids kommer varningar att genereras under testkörning.
Källa: opennet.ru