A programozás nem csak egy feladat elvégzéséről és a kimenet megszerzéséről szól. Arról is van szó, hogy egy program milyen gyorsan fut és fuss, hogy elérjék a kívánt kimenetet. A legtöbb programozási nyelvnél nem könnyű összehasonlítani a program gyorsaságát, és soha nem könnyű egy adott kódot időzíteni, hogy megértsük, melyik kódrészünk futtatja a legtöbb időt. Ezt a kérdést oldotta meg a Python timeit modul.
Python timeit modul
Piton timeit modul lehetővé teszi számunkra, hogy egy kóddarab végrehajtási idejét időzítsük, anélkül, hogy figyelembe vennénk a futtatható háttér folyamatokat. Ha kissé pontos mérésekre van szüksége a kód teljesítményéről timeit az a modul, amelyre menni kell.
timeit egyszerű példa
Először a timeit modult használjuk közvetlenül a parancssorból. A timeit modul közvetlenül a parancssori felületről használható, ahol egy egyszerű ciklus utasítást adhatunk meg és időzíthetünk a bemutatott paranccsal:
$ python --verzió$ python -m timeit '"&".csatlakozzon (str (n) n-hez az (1000) tartományban) '
$ python -m timeit '"&".csatlakozzon [[str (n) n-hez az (1000) tartományban]] '
$ python -m timeit '"&".csatlakozás (térkép (str, tartomány (1000))) '
Íme, amit ezzel a paranccsal kapunk vissza:
A végrehajtás ideje a CLI-től a timeit használatával
A későbbi szakaszokban megtudhatjuk, hogyan kezelhetjük az elvégzett hurkok számát, hogy megtaláljuk az optimális számot egy adott kifejezés végrehajtásához.
Egy kóddarab időzítése
Ha van egy alapvető python szkripted, amellyel meg akarod mérni az időt, akkor a timeit modul a következő:
import timeit# telepítési kód csak egyszer kerül végrehajtásra
setup_code = "from math import sqrt"
# main kódrészlet a teljesítmény ellenőrzéséhez
code_to_measure = ""
def példa ():
listám = []
x-re a tartományban (100):
a listám.függelék (sqrt (x))
""
# timeit utasítás
nyomtatás (timeit.timeit (beállítás = beállítás_kód,
stmt = code_to_measure,
szám = 10000))
Lássuk a parancs kimenetét:
Hurok időzítése
Ebben a kódban azt is láttuk, hogyan tudjuk szabályozni az ismétlések számát, amelyeket a timeit modul végrehajt, hogy megtaláljuk a program végrehajtásának legjobb idejét.
Mérje meg a CLI többsoros kódjának idejét
Mérhetjük a kód hosszát is, amely a Python parancssori felületen több soron átível. Nézzünk meg egy mintaprogramot ennek megtekintéséhez:
$ python -m timeit -s \> "linuxhint = " \
> "n (1000) tartományban:" \
> "linuxhint [str (n)] = n"
Íme, amit ezzel a paranccsal kapunk vissza:
Többsoros kód időzítése a CLI-n
Két kódblokk összevetése
Ha nem akar problémába ütközni a CLI használatával, és csak két Python programot akar összehasonlítani, hogy tudd, melyik fut gyorsabban, akkor ennek elérésére egy nagyon egyszerű módszer létezik:
import timeitstart = timeit.default_timer ()
funcOne ()
nyomtatás (timeit.default_timer () - indítás)
start = timeit.default_timer ()
funcTwo ()
nyomtatás (timeit.default_timer () - start)
A default_timer () függvény használatával újra és újra elindítjuk az időket, hogy különbséget találjunk ugyanarról, amikor utoljára indították. Ezt csak akkor lehet használni, ha jó moduláris stílusú a kódírás, így a kód minden egyes szakasza külön-külön mérhető.
Következtetés
Ebben a leckében azt tanulmányoztuk, hogyan lehet időzíteni a kódunkat a Pythonban, és megnézni az idő bonyolultságát és hatékonyságát, és átdolgozni, ha a kód túl lassú.