Общие слова Профилирование приложений — это процесс анализа программы для определения её характеристик: времени выполнения различных частей кода и использования ресурсов. Основные этапы профилирования всегда более-менее одинаковы: А как вообще работает профилировщик? Детальному обзору будет посвящена отдельная статья, пока можно ограничится базовой классификацией: Основные типы узких мест в асинхронном Python-коде Для асинхронного кода существует небольшое количество специфических "узких мест", которые лучше перечислить заранее. Каждому типу сопоставим пример кода. Список допущений Блокирующие операции Последовательный вызов асинхронных задач Слишком частое переключение контекста Неравномерное распределение ресурсов В англоязычной литературе такой сценарий называется "Resource Starvation". Чрезмерный расход памяти Использование "scalene" для профилирования Почему scalene? Потому что этот инструмент позволяет профилировать и CPU, и GPU, и память; 10k+ звёзд на гитхабе, проект активно ра