Python: уроки, справочник и задачи

timeit: замер скорости кода в Python

Раздел: Модули и библиотеки Python · Обновлено 31.10.2026

Модуль timeit в Python измеряет время выполнения небольших фрагментов кода: запускает их много раз подряд и возвращает общее время в секундах, что сглаживает случайные колебания. Ниже показано, как вызывать timeit.timeit() с параметрами stmt, setup и number, как сравнить две реализации одной функции и как правильно читать результаты замеров перед оптимизацией.

В мире разработки программного обеспечения одной из ключевых задач является оптимизация кода для достижения максимальной производительности. Для измерения времени выполнения участков кода в Python часто используется модуль timeit. В этой статье мы рассмотрим, как использовать timeit для оптимизации кода.

timeit
Фото: Ansgar Koreng / CC BY-SA 4.0, Wikimedia Commons
Содержание статьи
  1. Что такое timeit?
  2. Как использовать timeit?
  3. Преимущества использования timeit
  4. Рекомендации по использованию timeit
  5. Пример использования timeit для сравнительного анализа
  6. Рекомендации по интерпретации результатов timeit
  7. Пример использования timeit для сравнения реализаций функций
  8. Использование timeit для определения наиболее эффективного подхода
  9. Советы по оптимизации кода на основе результатов timeit
  10. Заключение

Что такое timeit?

timeit - это модуль стандартной библиотеки Python, который предоставляет простой способ измерить время выполнения небольших фрагментов кода. Он позволяет запускать код несколько раз и измерять среднее время выполнения. Это очень полезный инструмент для оптимизации кода.

Как использовать timeit?

Для использования модуля timeit сначала необходимо импортировать его:

import timeit

Затем можно измерить время выполнения участка кода, передав его в функцию timeit.timeit(). Например:

code_to_measure = """
for i in range(1000):
    pass
"""
execution_time = timeit.timeit(stmt=code_to_measure, number=1000)
print(f"Execution time: {execution_time} seconds")

Этот код измеряет время выполнения цикла for 1000 раз и выводит среднее время выполнения.

Преимущества использования timeit

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

Кроме того, timeit предоставляет возможность проводить сравнительный анализ различных реализаций одного и того же участка кода. Вы можете легко сравнивать время выполнения разных версий функций или алгоритмов и выбирать наиболее эффективный вариант.

Рекомендации по использованию timeit

Пример использования timeit для сравнительного анализа

import timeit
code1 = """
result = []
for i in range(1000):
    result.append(i)
"""
code2 = """
result = [i for i in range(1000)]
"""
time1 = timeit.timeit(stmt=code1, number=1000)
time2 = timeit.timeit(stmt=code2, number=1000)
print(f"Execution time for code1: {time1} seconds")
print(f"Execution time for code2: {time2} seconds")

В данном примере мы сравнили два способа создания списка чисел от 0 до 999 и измерили их время выполнения.

Рекомендации по интерпретации результатов timeit

После того, как вы провели измерения времени выполнения с помощью timeit, важно корректно интерпретировать полученные результаты. Рассмотрим некоторые рекомендации по анализу результатов:

Пример использования timeit для сравнения реализаций функций

import timeit
def func1(n):
    return [i for i in range(n)]
def func2(n):
    result = []
    for i in range(n):
        result.append(i)
    return result
n = 1000
time_func1 = timeit.timeit(lambda: func1(n), number=1000)
time_func2 = timeit.timeit(lambda: func2(n), number=1000)
print(f"Execution time for func1: {time_func1} seconds")
print(f"Execution time for func2: {time_func2} seconds")

В этом примере мы сравнили две функции, которые создают список чисел от 0 до n, и измерили их время выполнения.

Использование timeit для определения наиболее эффективного подхода

При работе над проектом важно определить наиболее эффективный подход к выполнению определенной задачи. Модуль timeit поможет вам провести сравнительный анализ различных подходов и выбрать наилучший вариант. Рассмотрим пример использования timeit для сравнения различных способов поиска максимального элемента в списке.

import timeit
# Первый подход: использование встроенной функции max()
def find_max1(lst):
    return max(lst)
# Второй подход: ручной поиск максимального элемента
def find_max2(lst):
    max_element = float('-inf')
    for num in lst:
        if num > max_element:
            max_element = num
    return max_element
lst = [i for i in range(1000)]
time_find_max1 = timeit.timeit(lambda: find_max1(lst), number=1000)
time_find_max2 = timeit.timeit(lambda: find_max2(lst), number=1000)
print(f"Execution time for find_max1: {time_find_max1} seconds")
print(f"Execution time for find_max2: {time_find_max2} seconds")

После измерения времени выполнения обоих подходов вы сможете сделать вывод о том, какой из них более эффективен в данном случае.

Советы по оптимизации кода на основе результатов timeit

Заключение

Использование модуля timeit является важным шагом в процессе оптимизации и улучшения производительности вашего кода. Надеемся, что представленные в статье примеры и советы помогут вам успешно применять timeit в вашей работе. Следите за нашими обновлениями для получения дополнительной информации о разработке на Python и других темах.

Спасибо за внимание и удачи в оптимизации вашего кода!