Python Timeit() с примерами

⚡ Умное резюме

Python Функция Timeit() измеряет время выполнения небольшого фрагмента кода, запуская его многократно и возвращая минимальную продолжительность. Она поддерживает методы timeit, repeat и default_timer и работает как из скриптов, так и из командной строки.

  • 🇧🇷 Определение Timeit: Измеряет время выполнения фрагмента кода, возвращая минимальное значение по результатам множества запусков.
  • 🧩 Параметры: Параметры stmt, setup, timer и number управляют тем, что запускается и как часто.
  • 🔁 Методы: Функции timeit(), repeat() и default_timer() предлагают различные варианты настройки времени.
  • 💻 Командная строка: Запустите команду `python -m timeit` с флагами `-n`, `-r` и `-s`.
  • Зачем это использовать: Отключает сборку мусора и выбирает наиболее точный таймер для каждой операционной системы.

Python Timeit()

Что такое Python Таймит()?

Python timeit () это метод в Python библиотека для измерения времени выполнения данного фрагмента кода. Python библиотека запускает оператор кода 1 миллион раз и обеспечивает минимальное время, затраченное на заданный набор фрагментов кода. Python timeit() — полезный метод, помогающий проверить производительность кода.

Синтаксис

timeit.timeit(stmt, setup,timer, number)

Параметры

  • STMT: потребуется код, время выполнения которого вы хотите измерить. Значение по умолчанию — «пройти».
  • установка: здесь будут указаны сведения о настройке, которые необходимо выполнить перед stmt. Значение по умолчанию — «пройти».
  • таймер: здесь будет значение таймера, у timeit() уже установлено значение по умолчанию, и мы можем его игнорировать.
  • номер: stmt будет выполняться в соответствии с номером, указанным здесь. Значение по умолчанию — 1000000.

Для работы с timeit() нам нужно импортировать модуль, как показано ниже:

import timeit

Первый пример

Вот простой пример функции timeit().

Code Пример 1

# testing timeit()
import timeit
print(timeit.timeit('output = 10*5'))

Выход:

0.06127880399999999

Мы рассмотрели простой пример, который дает нам время выполнения вывода простого оператора кода = 10*5, а время, необходимое для его выполнения, равно 0.06127880399999999.

Синхронизация нескольких строк в коде Python

Существует два способа выполнить несколько строк кода в timeit.timeit(): разделив строки точками с запятой или заключив код в строку в тройные кавычки.

Вот примеры, показывающие, как это работает.

Пример 1: Использование точки с запятой

import timeit
print("The time taken is ",timeit.timeit(stmt='a=10;b=10;sum=a+b'))

Выход:

The time taken is  0.137031482

Пример 2: Использование тройных кавычек

import timeit
import_module = "import random"
testcode = '''
def test():
    return random.randint(10, 100)
'''
print(timeit.repeat(stmt=testcode, setup=import_module))

Выход:

C:\pythontest>python testtimeit.py
The time taken is  0.182619178

timeit — Методы

Вот 2 важных метода timeit

timeit.default_timer() : при выполнении будет возвращено время по умолчанию.

timeit.repeat(stmt, настройка, таймер, повтор, число) : то же, что и timeit() , но с повтором timeit() вызывается в зависимости от того, сколько раз будет повторено.

Пример программы 1

# testing timeit()
import timeit
import_module = "import random"
testcode = '''
def test():
    return random.randint(10, 100)
'''
print(timeit.timeit(stmt=testcode, setup=import_module))

Выход:

0.46715912400000004

Пример 2

default_timer() Пример

# testing timeit()

import timeit
import random

def test():
    return random.randint(10, 100)

starttime = timeit.default_timer()
print("The start time is :",starttime)
test()
print("The time difference is :", timeit.default_timer() - starttime)

Выход:

The start time is : 0.220261875
The time difference is : 0.0004737320000000045

Пример 3: timeit.repeat()

# testing timeit()
import timeit
import_module = "import random"
testcode = '''
def test():
    return random.randint(10, 100)
'''
print(timeit.repeat(stmt=testcode, setup=import_module, repeat=5))

Выход:

 [0.43638873, 0.5040939680000001, 0.5069179909999999, 0.3943449330000002, 0.3546886979999999]

timeit.repeat() работает аналогично функции timeit.timeit(), с той лишь разницей, что она принимает аргумент повтора и возвращает время выполнения в формате массива со значениями в соответствии с номером повтора.

Выполнение функции синхронизации timeit.timeit() внутри интерфейса командной строки

Синтаксис выполнения вашей функции внутри timeit() в командной строке следующий:

python -m timeit [-n N] [-r N] [-s S] [-t] [-c] [-h] [code statement ...]

Параметры командной строки:

  • -n N: количество раз, которое вы хотите, чтобы код выполнялся.
  • -r N: количество повторений функции timeit().
  • -s S: здесь будут содержаться сведения о настройке, которые будут выполнены перед выполнением кода.
  • -t: для этого вы можете использовать time.time()
  • -c: для этого вы можете использовать time.clock()
  • -h: за помощь
  • заявление о коде: сведения о коде.

Пример

C:\pythontest>python -m timeit -s 'text="hello world"'
20000000 loops, best of 5: 13.1 nsec per loop

Другой способ выполнения внутри командной строки показан ниже:

Пример

>>> import timeit
>>> print("The time taken is ",timeit.timeit(stmt='a=10;b=10;sum=a+b'))
The time taken is  0.15048536300000137
>>>

Почему timeit() — лучший способ измерить время выполнения Python код?

Вот несколько причин, по которым мы считаем timeit() лучшим способом измерения времени выполнения.

  • Он запускает оператор кода 1 миллион раз (это значение по умолчанию), и исходя из этого возвращает минимальное затраченное время. Вы также можете увеличить/уменьшить 1 миллион, задав номер аргумента в функции time().
  • Во время выполнения теста сбор мусора каждый раз отключается функцией time().
  • timeit() внутренне принимает точное время в соответствии с используемой операционной системой. Например, он будет использовать time.clock() для Windows операционная система и time.time() для Mac и Linux.

Часто задаваемые вопросы (FAQ)

Метод timeit.timeit() выполняет запрос заданное количество раз и возвращает общее время. Метод timeit.repeat() выполняет это измерение несколько раз и возвращает список результатов, позволяя выбрать лучший из них.

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

Внутри строки stmt можно разделять операторы точками с запятой или передавать многострочную строку, используя тройные кавычки. Функции следует определять в setup и вызывать из stmt.

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

Да. Получив фрагмент кода и результаты теста Timeit, ИИ может предложить варианты переписывания, такие как списковые включения, генераторные выражения или библиотечные функции, после чего вы повторно запускаете Timeit, чтобы подтвердить реальное улучшение.

Подведем итог этой публикации следующим образом: