Bloomberg verfügt über Open-Source-Memray, ein Speicherprofilierungstool für Python-Anwendungen. Das Programm überwacht Speicherzuweisungsvorgänge in Python und bietet eine visuelle Schnittstelle zur Analyse und Optimierung des Speicherverbrauchs verschiedener Codeabschnitte sowie in C/C++ geschriebener Plug-Ins. Berichte können sowohl interaktiv als auch im HTML-Format generiert werden. Es umfasst eine CLI-Schnittstelle zur Verwaltung der Profilerstellung und eine Bibliothek, die zur Überwachung der Speicheraktivität in Drittprojekten verwendet werden kann. Der Code wird unter der Apache 2.0-Lizenz veröffentlicht. Der Betrieb wird nur auf der Linux-Plattform unterstützt.
Key Features:
- Anwendungen: Ermitteln der Ursachen für hohen Speicherverbrauch in Anwendungen, Auffinden von Speicherlecks und Identifizieren von Code, der zu viele Speicherzuweisungen vornimmt.
- Verfolgen Sie alle Funktionsaufrufe im Verhältnis zum gesamten Speicherverbrauch, zum Verbrauch innerhalb der Funktion und zur Anzahl der Speicherzuweisungen. Fähigkeit, den Aufrufstapel genau abzuschätzen.
- Bearbeitung von Aufrufen an C/C++-Bibliotheken und Berücksichtigung des Speicherverbrauchs in nativen Modulen. Unterstützung für die Analyse von Projekten mit Numpy und Pandas.
- Minimaler Overhead und vernachlässigbare Auswirkungen auf die Leistung der analysierten Anwendung. Möglichkeit, die native Codeverfolgung zu deaktivieren, um die Leistung zu verbessern.
- Das Vorhandensein einer großen Anzahl von Berichten zur Speichernutzung, einschließlich visueller hierarchischer und abgestufter Diagramme (Flammendiagramm).
- Die Fähigkeit, mit Threads zu arbeiten und den Speicher im Kontext einzelner Threads zu analysieren. Es werden sowohl Python-Threads als auch native Threads wie C++-Threads unterstützt, die in C/C++-Modulen verwendet werden.
- Die Möglichkeit zur Integration mit Pytest und zur Bereitstellung von Pytest-Anmerkungen, die die Speicherverbrauchsgrenzen definieren. Bei Überschreitung werden während der Testausführung Warnungen generiert.
Source: opennet.ru