Python Timeit() s primjerima
โก Pametni saลพetak
Python Timeit() mjeri vrijeme izvrลกavanja malog isjeฤka koda tako ลกto ga pokreฤe viลกe puta i vraฤa minimalno trajanje. Podrลพava metode timeit, repeat i default_timer te radi iz skripti ili naredbenog retka.

ล to je Python Timeit()?
Python timeit() je metoda u Python knjiลพnica za mjerenje vremena izvrลกenja zadanog isjeฤka koda. The Python knjiลพnica izvodi naredbu koda 1 milijun puta i osigurava minimalno vrijeme potrebno za dani skup isjeฤaka koda. Python timeit() je korisna metoda koja pomaลพe u provjeri izvedbe koda.
Sintaksa
timeit.timeit(stmt, setup,timer, number)
Parametri
- stmt: Ovo ฤe uzeti kod za koji ลพelite izmjeriti vrijeme izvrลกenja. Zadana vrijednost je "prolaz".
- postava: Ovo ฤe sadrลพavati detalje postavljanja koje je potrebno izvrลกiti prije stmt-a. Zadana vrijednost je "prolaz".
- vremena: Ovo ฤe imati vrijednost timera, timeit() veฤ ima postavljenu zadanu vrijednost i moลพemo je zanemariti.
- broj: stmt ฤe se izvrลกiti prema broju koji je ovdje naveden. Zadana vrijednost je 1000000.
Da bismo radili s timeit(), moramo uvesti modul, kao ลกto je prikazano u nastavku:
import timeit
Prvi primjer
Evo jednostavnog primjera funkcije timeit().
Code Primjer 1
# testing timeit() import timeit print(timeit.timeit('output = 10*5'))
Izlaz:
0.06127880399999999
Vidjeli smo jednostavan primjer koji nam daje vrijeme izvrลกenja izlaza naredbe jednostavnog koda = 10*5, a vrijeme potrebno za njegovo izvrลกenje je 0.06127880399999999.
Vremenski raspored Viลกe redaka u python kodu
Postoje dva naฤina za izvrลกavanje viลกe redaka koda u timeit.timeit(): odvajanjem redaka toฤkom-zarezom ili dodavanjem koda kao niza s trostrukim navodnicima.
Evo primjera koji pokazuju kako to funkcionira.
Primjer 1: Upotreba toฤke i zareza
import timeit print("The time taken is ",timeit.timeit(stmt='a=10;b=10;sum=a+b'))
Izlaz:
The time taken is 0.137031482
Primjer 2: Koriลกtenje trostrukih navodnika
import timeit import_module = "import random" testcode = ''' def test(): return random.randint(10, 100) ''' print(timeit.repeat(stmt=testcode, setup=import_module))
Izlaz:
C:\pythontest>python testtimeit.py The time taken is 0.182619178
timeit โ Metode
Ovdje su 2 vaลพne timeit metode
timeit.default_timer() : Ovo ฤe vratiti zadano vrijeme kada se izvrลกi.
timeit.repeat(stmt, postava, mjeraฤ vremena, ponavljanje, broj) : isto kao timeit() , ali s repeat timeit() se poziva koliko je puta zadano ponavljanje.
Primjer programa 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))
Izlaz:
0.46715912400000004
Primjer 2
default_timer() Primjer
# 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)
Izlaz:
The start time is : 0.220261875 The time difference is : 0.0004737320000000045
Primjer 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))
Izlaz:
[0.43638873, 0.5040939680000001, 0.5069179909999999, 0.3943449330000002, 0.3546886979999999]
timeit.repeat() radi sliฤno funkciji timeit.timeit(), s jedinom razlikom ลกto uzima argument ponavljanja i vraฤa vrijeme izvrลกenja u formatu polja s vrijednostima prema broju ponavljanja.
Izvrลกavanje vremenske funkcije timeit.timeit() unutar suฤelja naredbenog retka
Sintaksa za izvrลกavanje vaลกe funkcije unutar timeit() na naredbenom retku je sljedeฤa:
python -m timeit [-n N] [-r N] [-s S] [-t] [-c] [-h] [code statement ...]
Parametri naredbenog retka:
- -n N: koliko puta ลพelite da se kรดd izvrลกi.
- -r N: koliko puta ลพelite da se funkcija timeit() ponovi
- -s S: ovo ฤe imati pojedinosti o postavljanju koje ฤe se izvrลกiti prije izvrลกenja koda.
- -t: za ovo moลพete koristiti time.time()
- -c: za ovo moลพete koristiti time.clock()
- -h: za pomoฤ
- iskaz koda: pojedinosti koda.
Primjer
C:\pythontest>python -m timeit -s 'text="hello world"' 20000000 loops, best of 5: 13.1 nsec per loop
Drugi naฤin na koji moลพete izvrลกiti unutar naredbenog retka je kako je prikazano u nastavku:
Primjer
>>> import timeit >>> print("The time taken is ",timeit.timeit(stmt='a=10;b=10;sum=a+b')) The time taken is 0.15048536300000137 >>>
Zaลกto je timeit() najbolji naฤin za mjerenje vremena izvrลกenja Python kodirati?
Evo nekoliko razloga zaลกto smatramo da je timeit() najbolji naฤin za mjerenje vremena izvrลกenja.
- Pokreฤe iskaz koda 1 milijun puta, ลกto je zadana vrijednost, i iz toga ฤe vam vratiti minimalno potrebno vrijeme. Takoฤer moลพete poveฤati/smanjiti 1 milijun postavljanjem broja argumenta u funkciji vremena ().
- Tijekom izvoฤenja testa, skupljanje smeฤa je svaki put onemoguฤeno funkcijom time ().
- timeit() interno uzima toฤno vrijeme prema vaลกem operativnom sustavu koji koristite. Na primjer, koristit ฤe time.clock() za Windows operativni sustav i vrijeme.time() za mac i Linux.
