Programiranje ni zgolj izpolnitev naloge in pridobitev rezultatov, ki smo jih nameravali dobiti. Gre tudi za to, kako hitro se program izvaja in izvaja, tako da je dosežen želeni izhod. Z večino programskih jezikov ni enostavno primerjati, kako hitro se je izvajal program in nikoli ni enostavno določiti časa, da bi razumeli, kateri del naše kode potrebuje največ časa za izvajanje. To je vprašanje, ki ga rešuje Python timeit modul.
Python timeit modul
Python timeit modul nam omogoča časovno določanje časa izvedbe dela kode, ne da bi upošteval procese v ozadju, ki se izvajajo, da bi koda postala izvedljiva. Če potrebujete nekoliko natančne meritve uspešnosti kode timeit je modul, za katerega se je treba odločiti.
timeit preprost primer
Začeli bomo z uporabo modula timeit neposredno iz ukaznega poziva. Modul timeit lahko uporabimo neposredno iz CLI, kjer lahko vnesemo preprost stavek zanke in ga časovimo s prikazanim ukazom:
$ python --verzija$ python -m timeit '"&".join (str (n) za n v obsegu (1000)) '
$ python -m timeit '"&".join ([str (n) za n v obsegu (1000)]) '
$ python -m timeit '"&".pridruži (zemljevid (str, obseg (1000))) '
Tukaj dobimo s tem ukazom:
Čas izvedbe iz CLI z uporabo timeit
V enem od poznejših odsekov bomo izvedeli, kako lahko upravljamo število izvedenih zank, da poiščemo optimalno število za izvedbo danega izraza.
Časovno določanje kosa kode
Če imate osnovni skript python, za katerega želite meriti čas, je modul timeit prava pot:
uvozni čas# nastavitvena koda se izvede samo enkrat
setup_code = "iz matematičnega uvoza sqrt"
# glavni delček kode za preverjanje učinkovitosti
code_to_measure = "'
primer def ():
moj seznam = []
za x v območju (100):
moj seznam.dodaj (sqrt (x))
'"
# izjava timeit
natisni (timeit.timeit (setup = setup_code,
stmt = code_to_measure,
številka = 10000))
Poglejmo izhod za ta ukaz:
Časovna zanka
V tej kodi smo videli tudi, kako lahko nadzorujemo število ponovitev, ki jih bo modul timeit izvedel, da poiščemo najboljši čas izvedbe programa.
Izmerite čas za večvrstično kodo iz CLI
Izmerimo lahko tudi čas za kodo, ki se razteza skozi več vrstic v Python CLI. Poglejmo si vzorčni program, da vidimo:
$ python -m timeit -s \> "linuxhint = " \
> "za n v obsegu (1000):" \
> "linuxhint [str (n)] = n"
Tukaj dobimo s tem ukazom:
Časovna večvrstična koda na CLI
Na splošno primerjamo dva bloka kode
Če se ne želite spopadati z uporabo CLI-ja in želite primerjati dva programa Python, da boste vedeli, kateri deluje hitreje, obstaja to precej preprost način:
uvozni časzačetek = čas.default_timer ()
funcOne ()
natisni (timeit.default_timer () - začetek)
začetek = čas.default_timer ()
funcTwo ()
natisni (timeit.default_timer () - začetek)
Z uporabo funkcije default_timer () začnemo znova in znova, da poiščemo razliko za isto, ko je bila nazadnje zagnana. To je mogoče uporabiti samo, če imate dober modularni slog pisanja kode, tako da je mogoče vsako pievo kodo izmeriti ločeno.
Zaključek
V tej lekciji smo preučevali, kako lahko časovno določimo kodo v Pythonu, vidimo njihovo časovno zapletenost in učinkovitost ter nadaljujemo z njo, če je koda prepočasna.