Python Timeit() із прикладами

⚡ Розумний підсумок

Python Timeit() вимірює час виконання невеликого фрагмента коду, запускаючи його багато разів і повертаючи мінімальну тривалість. Він підтримує методи timeit, repeat та default_timer і працює зі скриптів або командного рядка.

  • 🇧🇷 Визначення часу: Вимірює час виконання фрагмента коду, повертаючи мінімальне значення за багато запусків.
  • 🧩 Параметри: stmt, setup, timer та number контролюють, що запускається та як часто.
  • 🔁 методи: timeit(), repeat() та default_timer() пропонують різні параметри часу.
  • 💻 Командний рядок: Запустіть команду python -m timeit з прапорцями, такими як -n, -r та -s.
  • Навіщо це використовувати: Вимикає збирання сміття та вибирає найточніший таймер для кожної операційної системи.

Python Час()

Що таке Python Timeit()?

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

синтаксис

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

Параметри

  • stmt: це візьме код, для якого ви хочете виміряти час виконання. Значення за замовчуванням – «pass».
  • установка: тут будуть деталі налаштування, які потрібно виконати перед stmt. Значення за замовчуванням – «pass».
  • таймер: Це матиме значення таймера, 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() , але з repeat 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.

Поширені запитання

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

timeit вимикає збірку сміття під час вимірювання, тому фонове очищення не спотворює час. Це робить результати більш узгодженими та порівнянними, зосереджуючись виключно на часі виконання тестованого фрагмента.

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

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

Так. Маючи фрагмент коду та результати, отримані за допомогою timeit, ШІ може запропонувати переробки, такі як спискові розуміння, вирази-генератори або бібліотечні функції, а потім ви повторно запускаєте timeit, щоб підтвердити реальність покращення.

Підсумуйте цей пост за допомогою: