Python Timeit -modul

Python Timeit -modul

Programmering handler ikke bare om å utføre en oppgave og få en utdata vi hadde tenkt å få. Det handler også om hvor raskt et program kjører og utføres slik at ønsket utgang oppnås. Med de fleste av programmeringsspråk er det ikke lett å sammenligne hvor raskt ut -programmet har kjørt, og det er aldri lett å tid til et bestemt stykke kode for å forstå hvilken del av koden vår tar mest tid til å utføre. Dette er problemet som løses av Python TIDIT modul.

Python Timeit -modul

Python TIDIT Modul lar oss tid til utførelsestiden for et kode uten å ta hensyn til bakgrunnsprosessene som kjøres for å gjøre en kode kjørbar. Hvis du trenger litt nøyaktige målinger av hvordan koden din utfører TIDIT er modulen å gå for.

Tid det enkelt eksempel

Vi starter med å bruke TIMEIT -modulen direkte fra ledeteksten. Tidsmodul kan brukes direkte fra CLI hvor vi kan legge inn en enkel sløyfeuttalelse og tid den ved å bruke 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 rekkevidde (1000)]) '
$ python -m timeit '"&".bli med (kart (str, rekkevidde (1000))) '

Dette er hva vi kommer tilbake med denne kommandoen:

Utførelsestid fra CLI ved å bruke timeit

I en av de senere seksjonene lærer vi hvordan vi kan administrere antall løkker som er utført for å finne det optimale antallet for utførelse av et gitt uttrykk.

Timing et kode stykke

Hvis du har et grunnleggende Python -skript som du vil måle tid for, er Timeit -modulen veien å gå:

Importer tid
# Oppsettkode utføres bare en gang
setup_code = "Fra matematikkimport sqrt"
# Hovedkodeutdrag for ytelseskontroll
code_to_measure = "'
def eksempel ():
myList = []
for x i rekkevidde (100):
min liste.vedlegg (sqrt (x))
'"
# Timeit -uttalelse
trykk (Timeit.Timeit (Setup = setup_code,
STMT = CODE_TO_MEASJE,
nummer = 10000)))

La oss se utdataene for denne kommandoen:

Timing en sløyfe

I denne koden så vi også hvordan vi kan kontrollere antall repetisjoner Timeit -modulen vil utføre for å finne den beste utførelsestidspunktet for programmet.

Mål tid for flerlinjekode fra CLI

Vi kan også måle tid for kode som spenner over flere linjer i Python CLI. La oss se på et eksempelprogram for å se dette:

$ python -m timeit -s \
> "linuxHint = " \
> "for n i rekkevidde (1000):" \
> "linuxhint [str (n)] = n"

Dette er hva vi kommer tilbake med denne kommandoen:

Timing Multi-line kode på CLI

Generelt sammenligning av to blokker med kode

Hvis du ikke vil komme inn i en problem på å bruke CLI og bare vil sammenligne to Python -programmer, slik at du vet hvilken som løper raskere, er det en ganske enkel måte å oppnå dette på:

Importer tid
start = tid.standard_timer ()
funcone ()
trykk (Timeit.Default_timer () - Start)
start = tid.standard_timer ()
functwo ()
trykk (Timeit.Default_timer () - Start)

Ved å bruke standard_timer () -funksjonen, starter vi tidene igjen og igjen for å finne en forskjell for det samme når det sist ble startet. Dette kan bare brukes når du har god modulær skrivekode, slik at hver kodepinne kan måles separat.

Konklusjon

I denne leksjonen studerte vi hvordan vi kan tid.