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 отново, за да потвърдите, че подобрението е реално.

Обобщете тази публикация с: