Перейти к основному контенту
Tech Path Finder
КурсыИнтервьюКод-ревьюБлог
Tech Path Finder

Персонализированный путеводитель в IT. Квизы, мок-интервью, код ревью и аналитика прогресса.

@potapov_me

Платформа

  • Курсы
  • Прогресс
  • Мок-интервью
  • Код ревью
  • Живое ревью с ИИ
  • Тренажёр переговоров
  • Закладки

Контент

  • Блог
  • Главная
  • Обратная связь

Компания

  • О проекте
  • Тарифы
  • Условия использования
  • Конфиденциальность
  • Согласие на обработку данных
  • Cookie
  • Реквизиты

Аккаунт

  • Войти
  • Зарегистрироваться
  • Профиль

© 2026 Tech Path Finder. Все права защищены.

·ИП Потапов К.С.·Политика конфиденциальности·
Сделано с ❤️ в России
  1. Профилирование Python с py-spy
Python экосистема·8 тем·94 вопроса·уровень Middle, Senior

Профилирование Python с py-spy

Полный курс по профилированию Python-приложений с помощью py-spy. От установки и первого запуска до продвинутых техник: профилирование subprocess, нативных расширений и работа в продакшене. Включает реальные кейсы оптимизации.

Начать курс

Профилирование Python с py-spy

Главное свойство py-spy: он подключается к уже запущенному процессу — без перезапуска, без изменения кода, без импорта чего-либо в приложение. Поэтому им смотрят то, что тормозит прямо сейчас на боевом сервере, а не то, что удалось воспроизвести на ноутбуке. Обратная сторона — сэмплирование: py-spy периодически снимает стек и показывает, где процесс проводит время, а не считает каждый вызов, как cProfile.

Восемь тем. Устройство и установка, разница с cProfile и понимание, какой инструмент отвечает на какой вопрос. Дальше три команды, вокруг которых всё и строится: record с flame graph и чтением этого графа (широкая полка внизу — это не то же самое, что высокий пик); top для живого наблюдения в терминале; dump для снимка стеков, когда процесс завис, — по нему видно, стоит ли он на блокировке, ждёт ли сеть или крутится в цикле.

Затем сложные случаи: дочерние процессы с флагом --children — multiprocessing, Celery, запуск через subprocess; нативные расширения с --native, когда время уходит в C-код, numpy или Cython, и обычный профилировщик показывает одну строку вызова.

Отдельная тема — работа в продакшене: какой частоты сэмплирования достаточно, сколько это стоит по нагрузке, что нужно учесть при профилировании под трафиком. Заканчивается курс разбором конкретных случаев оптимизации: как выглядела проблема на графе, что оказалось причиной, что дало исправление.

Нужен Python и понимание, что такое стек вызовов.

  1. 1

    Введение и установка

    Что такое py-spy, отличие от cProfile, установка и первое профилирование

    10 вопросов
  2. 2

    Запись и Flame Graphs

    Команда record, запись в SVG, анализ flame graph, поиск узких мест

    12 вопросов
  3. 3

    Интерактивный мониторинг

    Команда top, live-мониторинг в терминале, сортировка и фильтрация

    12 вопросов
  4. 4

    Снимки стека вызовов

    Команда dump, отладка зависаний, анализ deadlock и long-running функций

    12 вопросов
  5. 5

    Дочерние процессы

    Профилирование multiprocessing, Celery, subprocess, флаг --children

    12 вопросов
  6. 6

    Нативные расширения

    Профилирование C-кода, numpy, Cython, флаг --native

    12 вопросов
  7. 7

    Продакшен-профилирование

    Безопасное профилирование под нагрузкой, sampling rate, минимизация оверхеда

    12 вопросов
  8. 8

    Кейсы оптимизации

    Реальные истории: ускорение API в 10 раз, поиск memory leak, оптимизация batch-задач

    12 вопросов
  9. Зачёт

    Доступен после всех тем (0 из 8)

  10. Экзамен

    Доступен после зачёта

16 / 16

Sampling Profiler (Семплирующий профилировщик)

Основы профилирования

Профилировщик, который периодически снимает снимки стека вызовов (stack traces) вместо отслеживания каждого вызова функции. Это создаёт статистическую картину того, где программа проводит время.

Пример

py-spy делает 100 снимков в секунду по умолчанию. Если функция появилась в 50 снимках из 100, она занимала ~50% времени.

Связанные термины

Deterministic Profiler (Детерминированный профилировщик)

Основы профилирования

Профилировщик, который отслеживает каждый вызов функции и возвращаемое значение. Даёт точные данные, но создаёт значительный оверхед.

Пример

cProfile — детерминированный профилировщик. Он замедляет программу в 2-10 раз, но показывает точное количество вызовов каждой функции.

Связанные термины

Overhead (Накладные расходы)

Основы профилирования

Замедление работы программы, вызванное самим процессом профилирования. Чем ниже оверхед, тем ближе профилированные данные к реальному поведению в продакшене.

Пример

py-spy имеет оверхед <5%, тогда как cProfile может замедлить программу в 2-10 раз.

Связанные термины

Stack Trace (Трассировка стека)

Основы профилирования

Список фреймов (вызовов функций), которые привели к текущей точке выполнения. Показывает, какая функция вызвала текущую, какая вызвала её и так далее до корня.

Пример

Stack trace: main() → process_data() → parse_json() → loads(). Это значит, что loads() была вызвана из parse_json(), которая была вызвана из process_data().

Связанные термины

Flame Graph (Огненный граф)

Визуализация

Визуализация профиля в виде горизонтальных полос, где ширина полосы пропорциональна времени, проведённому в функции. Позволяет быстро найти узкие места.

Пример

На flame graph видно, что функция parse_json занимает 60% ширины графа — это кандидат на оптимизацию.

Связанные термины

Icicle Graph (Граф-сосулька)

Визуализация

Перевёрнутая версия flame graph, где корневые функции (например, main) находятся внизу, а вызываемые функции — выше. Более интуитивен для анализа иерархии вызовов.

Пример

py-spy генерирует icicle graph по умолчанию (--format icicle).

Связанные термины

PID (Process ID)

Команды py-spy

Уникальный идентификатор процесса в операционной системе. py-spy подключается к работающему процессу по его PID.

Пример

ps aux | grep python покажет PID Python-процессов. Затем: py-spy top --pid 12345.

Связанные термины

py-spy record

Команды py-spy

Команда для записи профиля в файл (SVG, flamegraph, raw). Используется для последующего анализа или отправки коллегам.

Пример

py-spy record -o profile.svg --pid 12345 запишет 30 секунд профиля в SVG-файл.

Связанные термины

py-spy top

Команды py-spy

Интерактивная команда для мониторинга использования CPU в реальном времени. Похожа на htop, но показывает функции Python.

Пример

py-spy top --pid 12345 покажет live-список функций с наибольшим использованием CPU.

Связанные термины

py-spy dump

Команды py-spy

Команда для мгновенного снимка стека вызовов всех потоков. Полезно для отладки зависаний и deadlock.

Пример

py-spy dump --pid 12345 покажет, что делает каждый поток прямо сейчас.

Связанные термины

Deadlock (Взаимная блокировка)

Продвинутые концепции

Ситуация, когда два или более потока ждут друг друга, и ни один не может продолжить выполнение. Программа зависает.

Пример

Поток 1 держит lock A и ждёт lock B. Поток 2 держит lock B и ждёт lock A. Оба потока никогда не продолжатся.

Связанные термины

GIL (Global Interpreter Lock)

Продвинутые концепции

Глобальная блокировка интерпретатора CPython, которая позволяет выполняться только одному потоку одновременно. Ограничивает многопоточность для CPU-bound задач.

Пример

Даже с 8 потоками CPU-bound задача на Python не ускорится из-за GIL. Для таких задач используйте multiprocessing.

Связанные термины

Native Profiling (Профилирование нативного кода)

Продвинутые концепции

Профилирование C/C++ кода, вызываемого из Python (numpy, Cython, расширения). Требует флага --native в py-spy.

Пример

Без --native py-spy покажет только время в numpy.linalg.inv(). С --native видно, сколько времени потрачено внутри C-функций LAPACK.

Связанные термины

Cython

Продвинутые концепции

Язык и компилятор, позволяющий писать C-расширения для Python. Код Cython компилируется в машинный код и вызывается из Python.

Пример

Модуль на Cython может ускорить вычисления в 10-100 раз. Профилируется с флагом --native.

Связанные термины

Multiprocessing (Многопроцессорность)

Продвинутые концепции

Модуль Python для запуска кода в отдельных процессах, обходящий GIL. Каждый процесс имеет свой интерпретатор Python.

Пример

from multiprocessing import Process. Для профилирования всех процессов используйте py-spy record --children --pid main_pid.

Связанные термины

Sampling Rate (Частота семплирования)

Продвинутые концепции

Количество снимков стека в секунду. Высокий rate даёт более точные данные, но увеличивает оверхед.

Пример

py-spy по умолчанию делает 100 снимков/сек. Для продакшена можно снизить до 10-20 для минимизации влияния.

Связанные термины

Частые вопросы о курсе «Профилирование Python с py-spy»

Состав курса, уровни, практика и способы проверки знаний.

Что входит в курс «Профилирование Python с py-spy»?

Курс включает 8 тем и 94 вопроса с разбором ответа. Начать можно с первой темы курса.

Для какого уровня рассчитан курс «Профилирование Python с py-spy»?

Маршрут охватывает уровни Middle, Senior. Темы расположены от основы к более сложным инженерным задачам, поэтому можно начать с подходящего места и не пропускать важные зависимости.

Как проверить, что материал усвоен?

После прохождения тем доступен зачёт по курсу «Профилирование Python с py-spy» — 20 случайных вопросов с порогом 80%. После зачёта открывается экзамен с развёрнутыми ответами и автоматической оценкой, приближённый к техническому собеседованию.

Курс «Профилирование Python с py-spy» бесплатный?

Да, курс полностью бесплатный: все 8 тем доступны без оплаты.