Python Timeit() példákkal

⚡ Okos összefoglaló

Python A Timeit() egy rövid kódrészlet végrehajtási idejét méri úgy, hogy sokszor lefuttatja azt, és visszaadja a minimális időtartamot. Támogatja a timeit, repeat és default_timer metódusokat, és szkriptekből vagy parancssorból is működik.

  • ⏱️ Időzítés definiálva: Egy kódrészlet végrehajtási idejét méri, és sok futtatás után a minimumot adja vissza.
  • 🧩 paraméterek: Az ütemezés, a beállítás, az időzítő és a számok vezérlik, hogy mi és milyen gyakran fusson.
  • 🔁 Módszerek: A timeit(), repeat() és default_timer() különböző időzítési lehetőségeket kínálnak.
  • ???? Parancs sor: Futtasd a python -m timeit parancsot olyan kapcsolókkal, mint a -n, -r és -s.
  • Miért érdemes használni: Letiltja a szemétgyűjtést, és operációs rendszerenként a legpontosabb időzítőt választja.

Python Időzítés()

Mi a Python Timeit()?

Python timeit() egy módszer Python könyvtár az adott kódrészlet végrehajtási idejének mérésére. A Python könyvtár 1 milliószor futtatja le a kódutasítást, és megadja a minimális időt az adott kódrészlet-készletből. Python A timeit() egy hasznos módszer, amely segít a kód teljesítményének ellenőrzésében.

Szintaxis

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

paraméterek

  • stmt: Ez azt a kódot veszi fel, amelynek végrehajtási idejét mérni szeretné. Az alapértelmezett érték a „pass”.
  • felépítés: Ez tartalmazza a beállítási részleteket, amelyeket az stmt előtt végre kell hajtani. Az alapértelmezett érték a „pass”.
  • időzítő: Ennek az időzítő értéke lesz, a timeit()-nek már van egy alapértelmezett értéke, és figyelmen kívül hagyhatjuk.
  • szám: Az stmt az itt megadott szám szerint fog végrehajtani. Az alapértelmezett érték 1000000.

A timeit() használatához importálnunk kell a modult az alábbiak szerint:

import timeit

Első példa

Itt van egy egyszerű példa a timeit() függvényre

Code Példa 1

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

output:

0.06127880399999999

Láttunk egy egyszerű példát, amely megadja az egyszerű kódutasítás kimenetének végrehajtási idejét = 10*5, és a végrehajtásához szükséges idő 0.06127880399999999.

Időzítés Több sor a python kódban

A timeit.timeit() többsoros kód végrehajtásának két módja van: a sorokat pontosvesszővel választja el, vagy a kódot karakterláncként hármas idézőjelekkel zárja be.

Itt vannak példák, amelyek bemutatják a működését.

1. példa: Pontosvessző használata

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

output:

The time taken is  0.137031482

2. példa: Tripla idézőjelek használata

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 – Módszerek

Itt van 2 fontos időmérő módszer

timeit.default_timer() : Ez visszaadja az alapértelmezett időt, amikor végrehajtja.

timeit.repeat(stmt, beállítás, időzítő, ismétlés, szám) : ugyanaz, mint a timeit() , de ismétléssel a timeit() az ismétlődések számát adja meg.

1. programpélda

# 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

Példa 2

default_timer() Példa

# 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

3. példa: 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]

A timeit.repeat() a timeit.timeit() függvényhez hasonlóan működik, azzal az egyetlen különbséggel, hogy az ismétlési argumentumban vesz részt, és visszaadja a végrehajtási időt tömb formátumban, az ismétlésszám szerinti értékekkel.

A timeit.timeit() időzítési függvény végrehajtása a parancssori felületen belül

A parancssorban a timeit() függvényben a függvény végrehajtásának szintaxisa a következő:

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

Parancssori paraméterek:

  • -n N: hányszor szeretné végrehajtani a kódot.
  • -r N: a timeit() függvény megismétlődésének száma
  • -s S: ennek beállítási részleteit a program a kód végrehajtása előtt hajtja végre.
  • -t: ehhez használhatja a time.time()
  • -c: ehhez használhatja a time.clock()
  • -h: segítségért
  • kód utasítás: A kód részletei.

Példa

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

A parancssorban belüli végrehajtás másik módja az alábbiak szerint:

Példa

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

Miért a timeit() a legjobb módszer a végrehajtási idő mérésére Python kód?

Íme néhány ok, amiért úgy gondoljuk, hogy a timeit() a legjobb módja a végrehajtási idő mérésének.

  • 1 milliószor futtatja le a kódutasítást, ami az alapértelmezett érték, és ebből visszaadja a minimális időt. Az 1 milliót is növelheti/csökkentheti az argumentumszám időbeli () függvényében történő beállításával.
  • A teszt végrehajtása közben a szemétgyűjtést minden alkalommal letiltja az idő () függvény.
  • A timeit() belsőleg a használt operációs rendszernek megfelelő pontos időt vesz igénybe. Például a time.clock() függvényt fogja használni Windows operációs rendszer és time.time() Mac és Linux számára.

GYIK

A timeit.timeit() függvény egy adott számú alkalommal futtatja le az utasítást, és egyetlen teljes időt ad vissza. A timeit.repeat() függvény a teljes mérést többször lefuttatja, és egy eredménylistát ad vissza, lehetővé téve a legjobb kiválasztását.

A timeit letiltja a szemétgyűjtést a mérés során, így a háttérben történő tisztítás nem torzítja az időzítést. Ezáltal az eredmények konzisztensebbek és összehasonlíthatóbbak, kizárólag a tesztelt kódrészlet végrehajtási idejére összpontosítva.

Az stmt karakterláncon belül pontosvesszővel választhatod el az utasításokat, vagy idézőjelek használatával adhatsz át egy többsoros karakterláncot. Függvények esetén definiáld őket a beállításokban, és az stmt-ből hívd meg őket.

A mesterséges intelligencia képes kódprofilokat készíteni, lassú hurkokat vagy költséges hívásokat azonosítani, vektorizált vagy beépített alternatívákat javasolni, és jobb adatszerkezeteket ajánlani.ping A fejlesztők az optimalizálásra összpontosítanak ott, ahol a timeit a legnagyobb szűk keresztmetszeteket mutatja.

Igen. Egy kódrészlet és a timeit eredményei alapján a mesterséges intelligencia átírásokat javasolhat, például listaértelmezéseket, generátorkifejezéseket vagy könyvtárfüggvényeket, majd újra lefuttatjuk a timeit-et a javulás valódiságának megerősítéséhez.

Foglald össze ezt a bejegyzést a következőképpen: