Programmeerimine ei tähenda ainult ülesande täitmist ja väljundit, mille kavatseme saada. Samuti on see seotud sellega, kui kiiresti programm töötab ja käivitub, nii et soovitud väljund saavutatakse. Enamiku programmeerimiskeeltega pole lihtne võrrelda, kui kiiresti programm läbi on kulgenud, ja kunagi pole lihtne ajastada konkreetset koodijuppi, et mõista, milline osa meie koodist võtab kõige rohkem aega täitmiseks. Selle küsimuse lahendab Python aeg moodul.
Pythoni ajamoodul
Python aeg moodul võimaldab meil ajastada koodijupi täitmisaega, võtmata arvesse taustaprotsesse, mida käivitatakse koodi käivitamiseks. Kui vajate koodi toimimise veidi täpset mõõtmist aeg on moodul, kuhu minna.
aeg lihtne näide
Alustame mooduli timeit kasutamisest otse käsuviibalt. mooduli timeit saab kasutada otse CLI-st, kuhu saame sisestada lihtsa tsükli lause ja ajastada seda näidatud käsu abil:
$ python --versioon$ python -m timeit '"&".liitu (str (n) n vahemikus (1000)) "
$ python -m timeit '"&".liitu ([str (n) n vahemikus (1000)]) '
$ python -m timeit '"&".liitu (kaart (str, vahemik (1000))) '
Selle käsuga saame tagasi:
Täitmise aeg CLI-st, kasutades timeit
Ühes hilisemas jaotises õpime, kuidas hallata sooritatud silmuste arvu, et leida antud avaldise täitmiseks optimaalne arv.
Koodijupi ajastamine
Kui teil on põhiline pythoni skript, mille jaoks soovite aega mõõta, on õige moodul timeit:
impordi aeg# seadistuskood käivitatakse vaid üks kord
setup_code = "matemaatika impordi sqrt-st"
# peamine koodijupp toimivuse kontrollimiseks
code_to_measure = ""
def näide ():
minu nimekiri = []
x-i jaoks vahemikus (100):
minu nimekiri.lisa (sqrt (x))
""
# timeit avaldus
print (timeit.timeit (setup = seadistuse_kood,
stmt = kood_meetmele,
arv = 10000))
Vaatame selle käsu väljundit:
Tsükli ajastus
Selles koodis nägime ka seda, kuidas saame kontrollida korduste arvu, mida moodul timeit teeb, et leida programmile parim täitmise aeg.
Mõõtke CLI mitmerealise koodi aega
Saame mõõta ka Pythoni CLI-s mitut rida läbiva koodi aega. Vaatame selle nägemiseks näidisprogrammi:
$ python -m timeit -s \> "linuxhint = " \
> "n jaoks vahemikus (1000):" \
> "linuxhint [str (n)] = n"
Selle käsuga saame tagasi:
CLI mitmerealise koodi ajastamine
Üldiselt kahe koodiploki võrdlemine
Kui te ei soovi CLI-ga vaeva näha ja soovite lihtsalt võrrelda kahte Pythoni programmi, et teaksite, milline neist töötab kiiremini, on selle saavutamiseks üsna lihtne viis:
impordi aegalgus = aeg.default_timer ()
funcOne ()
print (timeit.default_timer () - algus
algus = aeg.default_timer ()
funcTwo ()
print (timeit.default_timer () - algus
Funktsiooni default_timer () abil alustame kordi ja kordi, et leida erinevus samast ajast, kui seda viimati alustati. Seda saab kasutada ainult siis, kui teil on hea modulaarne stiili kirjutamine, nii et iga koodi pikkust saab mõõta eraldi.
Järeldus
Selles õppetükis uurisime, kuidas saaksime Pythonis oma koodi ajastada, näha nende keerukust ja tõhusust ning töötada üle, kui kood on liiga aeglane.