Этот вопрос проверяет понимание инструментов анализа производительности и умение находить узкие места в коде.
Профилирование позволяет измерять, какие части программы потребляют больше всего времени или ресурсов. Серверные приложения профилируют с помощью трассировки, сэмплирования или встроенных профайлеров. Результаты помогают найти проблемные функции, медленные запросы или утечки. На основе профилирования принимаются решения по оптимизации.
Профилирование — это процесс измерения производительности программы с целью найти узкие места.
Оно позволяет понять, где тратится CPU, память и время ожидания.
Сэмплирование (sampling)
Профайлер периодически считывает состояние стека.
Малое влияние на производительность.
Используется в инструментах: py-spy, perf.
Трассировка (tracing)
Каждое событие (вызов функции) записывается.
Более точное, но тяжелое для системы.
Инструменты: cProfile, yappi.
Профилирование памяти
Выявляет утечки, частое выделение объектов.
Инструменты: memory_profiler, tracemalloc.
Профилирование в продакшене
Тонкие, малонагружающие профайлеры.
Flamegraphs для анализа.
import cProfile
def heavy():
for _ in range(10**6):
pass
cProfile.run("heavy()")
горячие точки (hot spots)
функции с высоким временем CPU
блокирующие операции
неэффективные структуры данных
утечки памяти
Профилирование помогает понять реальную производительность сервиса и выбрать места для оптимизации.
Уровень
Рейтинг:
4
Сложность:
5
Навыки
CI/CD
Python
Linux
Ключевые слова
Подпишись на Python Developer в телеграм