Piton

Python timeit modul

Python timeit modul

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 timeit
start = 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ú.

Az egérkattintások emulálása az egérrel a Clickless Mouse használatával a Windows 10 rendszerben
Ha az egeret vagy a billentyűzetet nem megfelelő testtartásban, túlzott használat mellett használhatja, számos egészségügyi problémát okozhat, beleért...
Ezekkel az ingyenes eszközökkel adja hozzá az egérmozdulatokat a Windows 10 rendszerhez
Az elmúlt években a számítógépek és az operációs rendszerek nagymértékben fejlődtek. Volt idő, amikor a felhasználóknak parancsokkal kellett navigálni...
Az egér mozgásának vezérlése és kezelése több monitor között a Windows 10 rendszerben
Dual Display Mouse Manager lehetővé teszi az egér mozgásának vezérlését és konfigurálását több monitor között, lassítva annak mozgását a határ közeléb...