Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Python: cprofile, profiling, optimization

Что такое cProfile и для чего он используется?

Этот вопрос проверяет знание инструментов профилирования в Python для анализа производительности приложений.

Короткий ответ

cProfile — это встроенный в Python модуль для профилирования кода, который показывает, сколько времени выполняется каждая функция и сколько раз она вызывается. Он помогает находить "узкие места" в производительности приложения. cProfile измеряет время выполнения с минимальными накладными расходами и предоставляет детальную статистику. Результаты можно анализировать с помощью модуля pstats или визуализировать с помощью сторонних инструментов. Это основной инструмент для оптимизации производительности Python-приложений.

Длинный ответ

cProfile — это детерминированный профилировщик, который собирает информацию о времени выполнения всех функций в программе.

1. Основные возможности cProfile

  • Время выполнения: Измеряет общее и процессорное время для каждой функции

  • Количество вызовов: Показывает, сколько раз была вызвана каждая функция

  • Иерархия вызовов: Отображает, какие функции вызывают другие функции

  • Минимальные накладные расходы: Подходит для профилирования production-кода

2. Практическое использование

import cProfile
import time

def fast_function():
    return sum(range(1000))

def slow_function():
    time.sleep(0.1)
    return sum(range(10000))

def main():
    for _ in range(5):
        fast_function()
        slow_function()

# Профилирование всей программы
cProfile.run('main()', 'profile_stats')

# Или через командную строку
# python -m cProfile my_script.py

3. Анализ результатов

import pstats

# Анализ результатов
stats = pstats.Stats('profile_stats')
stats.sort_stats('cumulative')  # Сортировка по общему времени
stats.print_stats(10)  # Показать топ-10 самых медленных функций

# Вывод будет выглядеть так:
# ncalls  tottime  percall  cumtime  percall filename:lineno(function)
#     5    0.501    0.100    0.501    0.100 script.py:8(slow_function)
#     5    0.001    0.000    0.001    0.000 script.py:5(fast_function)

4. Ключевые метрики в выводе

  • ncalls: Количество вызовов функции

  • tottime: Общее время, проведенное в функции (исключая время в дочерних функциях)

  • percall: Время на один вызов (tottime / ncalls)

  • cumtime: Накопительное время в функции (включая дочерние функции)

Вывод: cProfile — незаменимый инструмент для оптимизации производительности Python-приложений. Используйте его для идентификации самых ресурсоемких функций перед началом оптимизации. Помните: оптимизируйте только то, что действительно является узким местом, а не то, что кажется медленным.

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    3

  • Сложность:

    6

Навыки

  • Python

    Python

Ключевые слова

#cprofile

#profiling

#optimization

Подпишись на Python Developer в телеграм

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.