Python

Python timeit-module

Python timeit-module

Programmeren gaat niet alleen over het volbrengen van een taak en het verkrijgen van een output die we van plan waren te krijgen. Het gaat er ook om hoe snel een programma draait en uitvoert, zodat de gewenste output wordt bereikt. Met de meeste programmeertalen is het niet eenvoudig om te vergelijken hoe snel een programma is uitgevoerd en het is nooit gemakkelijk om een ​​bepaald stuk code te timen om te begrijpen welk deel van onze code de meeste tijd kost om uit te voeren. Dit is het probleem dat wordt opgelost door de Python timeit module.

Python timeit-module

Python timeit module stelt ons in staat om de uitvoeringstijd van een stuk code te timen zonder rekening te houden met de achtergrondprocessen die worden uitgevoerd om een ​​code uitvoerbaar te maken. Als u enigszins nauwkeurige metingen nodig heeft van hoe uw code presteert timeit is de module om voor te gaan?.

timeit eenvoudig voorbeeld

We beginnen met het gebruik van de timeit-module rechtstreeks vanaf de opdrachtprompt. timeit-module kan rechtstreeks vanuit de CLI worden gebruikt, waar we een eenvoudige lusinstructie kunnen invoeren en deze kunnen timen met behulp van de getoonde opdracht:

$ python --versie
$ python -m timeit '"&".join(str(n) voor n in bereik(1000))'
$ python -m timeit '"&".join([str(n) voor n binnen bereik(1000)])'
$ python -m timeit '"&".join(map(str, range(1000)))'

Dit is wat we terugkrijgen met deze opdracht:

Tijdstip van uitvoering van CLI met behulp van timeit

In een van de latere secties zullen we leren hoe we het aantal uitgevoerde lussen kunnen beheren om het optimale aantal te vinden voor de uitvoering van een bepaalde uitdrukking.

Een stukje code timen

Als je een basis Python-script hebt waarvoor je de tijd wilt meten, is de timeit-module de juiste keuze:

import timeit
# setup-code wordt maar één keer uitgevoerd
setup_code = "van wiskunde import sqrt"
# hoofdcodefragment voor prestatiecontrole
code_to_measure = "'
def voorbeeld():
mijn lijst = []
voor x binnen bereik (100):
mijn lijst.toevoegen(sqrt(x))
'"
# timeit-verklaring
print(timeit).timeit(setup = setup_code),
stmt = code_naar_maat,
aantal = 10000))

Laten we de uitvoer voor deze opdracht bekijken:

Een lus timen

In deze code hebben we ook gezien hoe we het aantal herhalingen kunnen regelen dat de timeit-module zal uitvoeren om de beste uitvoeringstijd voor het programma te vinden.

Tijd meten voor meerregelige code van CLI

We kunnen ook de tijd meten voor code die zich uitstrekt over meerdere regels in de Python CLI. Laten we een voorbeeldprogramma bekijken om dit te zien:

$ python -m timeit -s \
> "linuxhint = " \
> "voor n in bereik (1000):" \
> " linuxhint[str(n)] = n"

Dit is wat we terugkrijgen met deze opdracht:

Timing meerregelige code op CLI

Over het algemeen twee codeblokken vergelijken

Als je geen gedoe wilt hebben met het gebruik van CLI en gewoon twee Python-programma's wilt vergelijken zodat je weet welke sneller werkt, dan is er een vrij eenvoudige manier om dit te bereiken:

import timeit
start = timeit.default_timer()
funcOne()
print(timeit).default_timer() - start)
start = timeit.default_timer()
funcTwo()
print(timeit).default_timer() - start)

Door de functie default_timer() te gebruiken, beginnen we de tijden keer op keer om een ​​verschil te vinden voor hetzelfde toen het voor het laatst werd gestart. Dit kan alleen worden gebruikt als je een goede modulaire schrijfstijl hebt, zodat elke code afzonderlijk kan worden gemeten.

Conclusie

In deze les hebben we bestudeerd hoe we onze code in Python kunnen timen en hun tijdscomplexiteit en efficiëntie kunnen zien en eraan kunnen werken als de code te traag is.

Handige hulpmiddelen voor Linux-gamers
Als je graag games op Linux speelt, is de kans groot dat je apps en hulpprogramma's zoals Wine, Lutris en OBS Studio hebt gebruikt om de game-ervaring...
HD Remastered Games voor Linux die nog nooit eerder een Linux-release hebben gehad
Veel game-ontwikkelaars en uitgevers komen met HD-remaster van oude games om de levensduur van franchise te verlengen, fans die compatibiliteit met mo...
Hoe AutoKey te gebruiken om Linux-spellen te automatiseren
AutoKey is een hulpprogramma voor desktopautomatisering voor Linux en X11, geprogrammeerd in Python 3, GTK en Qt. Met behulp van de scripting- en MACR...