> Как измерить потребление ресурсов решения (Python)
Уровень: senior · Роль: backend · Язык: Python · Категория: Технические вопросы
Компании: Сбер
Стек: Python
> Пример ответа
Для измерения потребления ресурсов Python-решения я использую комбинацию инструментов:
1. Профилирование CPU и памяти
cProfile- встроенный модуль для детального профилирования времени выполнения функций.memory_profiler- сторонняя библиотека для отслеживания использования памяти построчно.tracemalloc- встроенный модуль для отслеживания выделения памяти.
2. Мониторинг в реальном времени
psutil- кроссплатформенная библиотека для получения данных о CPU, памяти, диске и сети процесса.resource(Unix) - для лимитов и статистики по времени CPU и памяти.
3. Системные утилиты
time- замер времени выполнения скрипта.top/htop- для общего мониторинга процесса.valgrind(с массой инструментов) - для глубокого анализа памяти.
Пример кода для замера CPU и памяти с psutil:
PYTHONimport psutilimport osdef measure_resources(func):def wrapper(*args, **kwargs):process = psutil.Process(os.getpid())cpu_before = process.cpu_percent(interval=0.1)mem_before = process.memory_info().rssresult = func(*args, **kwargs)cpu_after = process.cpu_percent(interval=0.1)mem_after = process.memory_info().rssprint(f"CPU: {cpu_after - cpu_before:.2f}%, Mem: {(mem_after - mem_before)/1024:.2f} KB")return resultreturn wrapper
4. Для production-сред
- Использую метрики Prometheus + Grafana с экспортерами (например,
prometheus_clientдля Python). - Логирование времени выполнения и размера данных через
structlogилиlogging.
Важно:
- Измерения проводить многократно (не менее 5-10 раз) для усреднения.
- Учитывать фоновые процессы и GC Python.
- Для асинхронных решений -
asyncioпрофилирование черезasyncio.run()с замером времени.
> Похожие задачи по Python
Что делал при понимании, что не успеваешь в сроки
Как понимать доступность сервиса
Приходилось ли оптимизировать алгоритм, а не только архитектуру
Каково мнение о коренной статической типизации
> Похожие задачи по backend
Что делал при понимании, что не успеваешь в сроки
Как понимать доступность сервиса
Приходилось ли оптимизировать алгоритм, а не только архитектуру
Каково мнение о коренной статической типизации
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью