Programmering handler ikke bare om å utføre en oppgave og få et resultat vi hadde tenkt å få. Det handler også om hvor raskt et program kjører og kjøres slik at ønsket resultat oppnås. Med de fleste programmeringsspråkene er det ikke lett å sammenligne hvor raskt programmet har kjørt, og det er aldri lett å tidsbestemme en bestemt kode for å forstå hvilken del av koden vår som tar mest tid å utføre. Dette er problemet som løses av Python timeit modul.
Python timeit-modul
Python timeit modul tillater oss å tidsbestille utførelsestiden for et stykke kode uten å ta hensyn til bakgrunnsprosesser som kjøres for å gjøre en kode kjørbar. Hvis du trenger litt nøyaktige målinger av hvordan koden din fungerer timeit er modulen å gå for.
timeit enkelt eksempel
Vi starter med å bruke timeit-modulen direkte fra ledeteksten. timeit-modulen kan brukes direkte fra CLI hvor vi kan legge inn en enkel sløyfesetning og tidsbestemme den ved hjelp av den viste kommandoen:
$ python - versjon$ python -m timeit '"&".bli med (str (n) for n i rekkevidde (1000)) '
$ python -m timeit '"&".bli med ([str (n) for n i området (1000)]) '
$ python -m timeit '"&".bli med (kart (str, rekkevidde (1000))) '
Her er hva vi kommer tilbake med denne kommandoen:
Tidspunkt for utførelse fra CLI ved bruk av timeit
I en av de senere seksjonene vil vi lære hvordan vi kan håndtere antall løkker utført for å finne det optimale tallet for utførelse av et gitt uttrykk.
Timing av et stykke kode
Hvis du har et grunnleggende python-skript som du vil måle tid for, er timeit-modulen veien å gå:
importer tid# oppsettkode kjøres bare én gang
setup_code = "fra matematisk import sqrt"
# hovedkodebit for ytelseskontroll
code_to_measure = "'
def eksempel ():
min liste = []
for x innen rekkevidde (100):
min liste.legge til (sqrt (x))
'"
# timeit uttalelse
skriv ut (timeit.timeit (setup = setup_code,
stmt = kode_til_måling,
antall = 10000))
La oss se utdataene for denne kommandoen:
Timing en løkke
I denne koden så vi også hvordan vi kan kontrollere antall repetitier timeit-modulen skal utføre for å finne den beste utførelsestiden for programmet.
Mål tid for flerlinjekode fra CLI
Vi kan også måle tid for kode som strekker seg gjennom flere linjer i Python CLI. La oss se på et eksempelprogram for å se dette:
$ python -m timeit -s \> "linuxhint = " \
> "for n innen rekkevidde (1000):" \
> "linuxhint [str (n)] = n"
Her er hva vi kommer tilbake med denne kommandoen:
Timing multi-line code på CLI
Generelt sammenligner du to kodeblokker
Hvis du ikke vil bry deg med å bruke CLI og bare ønsker å sammenligne to Python-programmer slik at du vet hvilken som kjører raskere, er det en ganske enkel måte å oppnå dette på:
importer tidstart = tid det.default_timer ()
funcOne ()
skriv ut (timeit.default_timer () - start)
start = tid det.default_timer ()
funcTwo ()
skriv ut (timeit.default_timer () - start)
Ved å bruke default_timer () -funksjonen starter vi gangene igjen og igjen for å finne en forskjell for det samme når den sist ble startet. Dette kan bare brukes når du har god modulstil for å skrive kode, slik at hver kode av koden kan måles separat.
Konklusjon
I denne leksjonen studerte vi hvordan vi kan time koden vår i Python og se deres tidskompleksitet og effektivitet og jobbe med den hvis koden er for treg.