Python Timeit() med eksempler

⚡ Smart opsummering

Python Timeit() måler udførelsestiden for et lille kodestykke ved at køre det mange gange og returnere den minimale varighed. Den understøtter metoderne timeit, repeat og default_timer og fungerer fra scripts eller kommandolinjen.

  • ⏱️ Timeit Defineret: Måler udførelsestiden for et kodestykke og returnerer minimumsværdien over mange kørsler.
  • 🧩 Parametre: stmt, opsætning, timer og tal styrer, hvad der kører og hvor ofte.
  • 🔁 Metoder: timeit(), repeat() og default_timer() tilbyder forskellige timingmuligheder.
  • 💻 Kommandolinje: Kør python -m timeit med flag som -n, -r og -s.
  • ✅ Hvorfor bruge det: Deaktiverer affaldsindsamling og vælger den mest præcise timer pr. operativsystem.

Python Timeit()

Hvad er Python Timeit()?

Python timeit() er en metode i Python bibliotek for at måle den eksekveringstid, som det givne kodestykke tager. De Python biblioteket kører kodesætningen 1 million gange og giver den minimale tid, der tages fra det givne sæt kodestykker. Python timeit() er en nyttig metode, der hjælper med at kontrollere kodens ydeevne.

Syntaks

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

Driftsparametre

  • stmt: Dette vil tage den kode, som du vil måle udførelsestiden for. Standardværdien er "bestå".
  • setup: Dette vil have opsætningsdetaljer, der skal udføres før stmt. Standardværdien er "bestå".
  • timer: Dette vil have timerværdien, timeit() har allerede en standardværdi sat, og vi kan ignorere det.
  • nummer: Stmt'en udføres i henhold til nummeret, der er angivet her. Standardværdien er 1000000.

For at arbejde med timeit(), skal vi importere modulet, som vist nedenfor:

import timeit

Første eksempel

Her er et simpelt eksempel på timeit() funktion

Code Eksempel 1

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

Output:

0.06127880399999999

Vi har set et simpelt eksempel, der giver os eksekveringstiden for den simple kodesætning output = 10*5, og tiden det tager at udføre den er 0.06127880399999999.

Timing Flere linjer i python-kode

Der er to måder at udføre flere linjer kode i timeit.timeit(): ved at adskille linjerne med semikolon eller ved at omslutte koden som en streng med tredobbelte anførselstegn.

Her er eksempler, der viser, hvordan det fungerer.

Eksempel 1: Brug af semikolon

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

Output:

The time taken is  0.137031482

Eksempel 2: Brug af tredobbelte anførselstegn

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

Output:

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

timeit – Metoder

Her er 2 vigtige timeit-metoder

timeit.default_timer() : Dette returnerer standardtidspunktet, når det udføres.

timeit.repeat(stmt, opsætning, timer, gentag, nummer) : samme som timeit() , men med repeat kaldes timeit() det antal gange, der er givet gentagelse.

Programeksempel 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))

Output:

0.46715912400000004

Eksempel 2

default_timer() Eksempel

# 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)

Output:

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

Eksempel 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))

Output:

 [0.43638873, 0.5040939680000001, 0.5069179909999999, 0.3943449330000002, 0.3546886979999999]

timeit.repeat() fungerer på samme måde som timeit.timeit()-funktionen, med den eneste forskel, den tager i gentagelsesargumentet og giver udførelsestiden tilbage i array-format med værdier i henhold til gentagelsestallet.

Udførelse af timing-funktionen timeit.timeit() i kommandolinjegrænsefladen

Syntaksen til at udføre din funktion inde i timeit() på kommandolinjen er som følger:

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

Kommandolinjeparametre:

  • -n N: det antal gange, du ønsker, at koden skal udføres.
  • -r N: det antal gange, du ønsker, at timeit()-funktionen skal gentages
  • -s S: dette vil have opsætningsdetaljer, der vil blive eksekveret før kodeudførelse.
  • -t: til dette kan du bruge time.time()
  • -c: til dette kan du gøre brug af time.clock()
  • -h: for hjælp
  • kodeerklæring: Kodedetaljerne.

Eksempel

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

En anden måde, du kan udføre inde i kommandolinjen, er som vist nedenfor:

Eksempel

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

Hvorfor er timeit() den bedste måde at måle udførelsestiden på Python kode?

Her er et par grunde til, hvorfor vi betragter timeit() som den bedste måde at måle eksekveringstid på.

  • Den kører kodesætningen 1 million gange, som er standardværdien, og derfra vil den returnere den minimale tid, det tager. Du kan også øge/mindske 1 million ved at indstille argumentnummeret i tid ()-funktionen.
  • Mens testen udføres, deaktiveres affaldsindsamlingen hver gang efter tid () funktion.
  • timeit() internt tager den nøjagtige tid i henhold til dit operativsystem, der bruges. For eksempel vil den bruge time.clock() til Windows styresystem og time.time() til mac og Linux.

Ofte Stillede Spørgsmål

timeit.timeit() kører sætningen et bestemt antal gange og returnerer en enkelt samlet tid. timeit.repeat() kører hele målingen flere gange og returnerer en liste over resultater, så du kan vælge det bedste.

timeit deaktiverer affaldsindsamling under måling, så baggrundsoprydning ikke forvrænger timingen. Dette gør resultaterne mere konsistente og sammenlignelige, idet der udelukkende fokuseres på udførelsestiden for det kodestykke, der testes.

Du kan adskille sætninger med semikolon i stmt-strengen eller sende en streng med flere linjer ved hjælp af tredobbelte anførselstegn. For funktioner skal du definere dem i opsætningen og kalde dem fra stmt.

AI kan profilere kode, identificere langsomme løkker eller dyre kald, foreslå vektoriserede eller indbyggede alternativer og anbefale bedre datastrukturer.ping Udviklere fokuserer optimering der, hvor timeit viser de største flaskehalse.

Ja. Givet et kodestykke og dets timeit-resultater kan AI foreslå omskrivninger såsom listeforståelser, generatorudtryk eller biblioteksfunktioner, og derefter kører du timeit igen for at bekræfte, at forbedringen er reel.

Opsummer dette indlæg med: