Компанія Bloomberg відкрила вихідні тексти memray, інструментарію для профілювання пам'яті у програмах Python. Програма відстежує операції виділення пам'яті в Python і пропонує наочний інтерфейс для аналізу та оптимізації споживання пам'яті різними ділянками коду, а також модулями, що підключаються на C/C++. Звіти можуть формуватись як в інтерактивній формі, так і генеруватися у форматі HTML. До складу входить CLI-інтерфейс для керування профільуванням та бібліотека, яку можна використовувати для відстеження операцій із пам'яттю у сторонніх проектах. Код опубліковано за ліцензією Apache 2.0. Робота підтримується лише на платформі Linux.
Основні можливості:
- Області застосування: виявлення причин великого споживання пам'яті у програмах, пошук витоків пам'яті та визначення коду, що виконує надто багато операцій виділення пам'яті.
- Відстеження всіх викликів функцій у прив'язці до загального споживання пам'яті, споживання всередині функції та кількості операцій виділення пам'яті. Можливість точної оцінки стека дзвінків.
- Обробка звернень до бібліотек на C/C++ та облік споживання пам'яті нативних модулях. Підтримка аналізу проектів, що використовують numpy та pandas.
- Мінімальні накладні витрати та незначний вплив на продуктивність аналізованого додатка. Можливість відключення відстеження нативного коду підвищення продуктивності.
- Наявність великої кількості звітів використання пам'яті, включаючи наочні ієрархічні і ступінчасті графіки (flame graph).
- Можливість роботи з потоками та аналізу пам'яті в розрізі окремих потоків. Підтримуються як потоки Python, так і нативні потоки, такі як C++ threads, які застосовуються в модулях C/C++.
- Можливість інтеграції з pytest та надання анотацій pytest, що визначають рамки споживання пам'яті, при виході за які у процесі виконання тестів формуватимуться попередження.
Джерело: opennet.ru