Был я тут на одной python конференции и задал вопрос слушателям — кто как находит проблемы производительности в своем python коде. Из 35 ответивших оказалось:
- больше половины просто читают код и находят глазами;
- 10% вообще не сталкиваются с такими проблемами;
- остальные используют различные профайлеры.
На этом воркшопе я бы хотел повлиять на это распределение и для этого предлагаю ознакомиться с его содержанием.
В начале мы рассмотрим применение CPU профайлинга для поиска узких мест. Посмотрим, как удобно считывать информацию при большом объеме отчетов. Как можно сначала локализовать до проблемных функций, а потом и до конкретных строк кода. В этом нам помогут такие инструменты как:
- cProfile
- line_profiler
- py-spy
Далее стоит отдельно рассмотреть проблему потребления памяти нашим кодом на python и поискать места, где мы ее не освобождаем с помощью memory_profiler.
В завершении рассмотрим случай IO профайлинга для асинхронного кода, который бегает в БД и к другим сервисам. Посмотрим, насколько поддержка linux perf в python 3.12 нам поможет с этой задачей.
Каждый блок воркшопа будет сопровождаться разобранным примером и практическим заданием, которое вы сможете решить на своем ноутбуке. А по ходу задать вопросы, поделиться результатами и подискутировать на тему воркшопа с участниками и ведущим.