Python Timeit() med exempel
Vad รคr Python Timeit()?
Python timeit() รคr en metod i Python bibliotek fรถr att mรคta exekveringstiden som det givna kodavsnittet tar. De Python biblioteket kรถr kodsatsen 1 miljon gรฅnger och tillhandahรฅller den minsta tid som tas frรฅn den givna uppsรคttningen kodavsnitt. Python timeit() รคr en anvรคndbar metod som hjรคlper till att kontrollera kodens prestanda.
syntax
timeit.timeit(stmt, setup,timer, number)
Driftparametrar
- stmt: Detta tar koden fรถr vilken du vill mรคta exekveringstiden. Standardvรคrdet รคr "pass".
- instรคllning: Detta kommer att ha instรคllningsdetaljer som mรฅste kรถras innan stmt. Standardvรคrdet รคr "pass."
- Timern: Detta kommer att ha timervรคrdet, timeit() har redan ett standardvรคrde instรคllt, och vi kan ignorera det.
- antal: Stmt kommer att kรถras enligt numret som anges hรคr. Standardvรคrdet รคr 1000000.
Fรถr att arbeta med timeit() mรฅste vi importera modulen, som visas nedan:
import timeit
Fรถrsta exemplet
Hรคr รคr ett enkelt exempel pรฅ timeit()-funktionen
Kodexempel 1
# testing timeit()
import timeit
print(timeit.timeit('output = 10*5'))
Produktion:
0.06127880399999999
Vi har sett ett enkelt exempel som ger oss exekveringstiden fรถr den enkla kodsatsens utdata = 10*5, och tiden det tar att exekvera den รคr 0.06127880399999999.
Timing Flera rader i python-kod
Det finns tvรฅ sรคtt att kรถra flera rader kod i timeit.timeit(): genom att separera raderna med semikolon eller omsluta koden som en strรคng med tre citattecken.
Hรคr รคr exempel som visar hur det fungerar.
Exempel 1: Anvรคnda semikolon
import timeit
print("The time taken is ",timeit.timeit(stmt='a=10;b=10;sum=a+b'))
Produktion:
The time taken is 0.137031482
Exempel 2: Anvรคnda tredubbla citattecken
import timeit
import_module = "import random"
testcode = '''
def test():
return random.randint(10, 100)
'''
print(timeit.repeat(stmt=testcode, setup=import_module))
Produktion:
C:\pythontest>python testtimeit.py The time taken is 0.182619178
timeit โ Metoder
Hรคr รคr 2 viktiga timeit-metoder
timeit.default_timer() : Detta returnerar standardtiden nรคr den kรถrs.
timeit.repeat(stmt, setup, timer, repeat, number) : samma som timeit() , men med repeat kallas timeit() antalet gรฅnger som repeat ges.
Programexempel 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))
Produktion:
0.46715912400000004
Exempelvis 2
default_timer() Exempel
# 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)
Produktion:
The start time is : 0.220261875 The time difference is : 0.0004737320000000045
Exempel 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))
Produktion:
[0.43638873, 0.5040939680000001, 0.5069179909999999, 0.3943449330000002, 0.3546886979999999]
timeit.repeat() fungerar pรฅ samma sรคtt som timeit.timeit()-funktionen, med den enda skillnaden den tar i repeat-argumentet och ger tillbaka exekveringstiden i arrayformat med vรคrden enligt repeteringsnumret.
Kรถr timingfunktionen timeit.timeit() i kommandoradsgrรคnssnittet
Syntaxen fรถr att utfรถra din funktion inuti timeit() pรฅ kommandoraden รคr fรถljande:
python -m timeit [-n N] [-r N] [-s S] [-t] [-c] [-h] [code statement ...]
Kommandoradsparametrar:
- -n N: antalet gรฅnger du vill att koden ska kรถras.
- -r N: antalet gรฅnger du vill att timeit()-funktionen ska upprepas
- -s S: detta kommer att ha instรคllningsdetaljer som kommer att exekveras innan koden kรถrs.
- -t: fรถr detta kan du anvรคnda time.time()
- -c: fรถr detta kan du anvรคnda time.clock()
- -h: fรถr hjรคlp
- kodsats: Koddetaljerna.
Exempelvis
C:\pythontest>python -m timeit -s 'text="hello world"' 20000000 loops, best of 5: 13.1 nsec per loop
Ett annat sรคtt du kan kรถra inuti kommandoraden รคr som visas nedan:
Exempelvis
>>> import timeit
>>> print("The time taken is ",timeit.timeit(stmt='a=10;b=10;sum=a+b'))
The time taken is 0.15048536300000137
>>>
Varfรถr รคr timeit() det bรคsta sรคttet att mรคta exekveringstiden fรถr Python koda?
Hรคr รคr nรฅgra anledningar till varfรถr vi anser timeit() รคr det bรคsta sรคttet att mรคta exekveringstiden.
- Den kรถr kodsatsen 1 miljon gรฅnger som รคr standardvรคrdet, och frรฅn det kommer den att returnera den minsta tid som det tar. Du kan ocksรฅ รถka/minska 1 miljon genom att stรคlla in argumentnumret i tid ()-funktionen.
- Medan testet kรถrs inaktiveras sophรคmtningen varje gรฅng efter tid ()-funktionen.
- timeit() tar internt den exakta tiden enligt ditt operativsystem som anvรคnds. Till exempel kommer den att anvรคnda time.clock() fรถr Windows operativsystem och time.time() fรถr Mac och Linux.
Sammanfattning
Timeit() anvรคnds fรถr att fรฅ exekveringstiden fรถr den lilla koden som ges
Parametrar som anvรคnds med timeit()
- stmt: Detta tar koden du vill mรคta exekveringstiden
- setup: Detta kommer att ha instรคllningsdetaljer som mรฅste kรถras innan stmt
- timer: Detta kommer att ha timervรคrdet, timeit() har redan ett standardvรคrde instรคllt, och vi kan ignorera det.
- nummer: stmt kommer att kรถras enligt numret som anges hรคr.
