Python

Python-Timeit-Modul

Python-Timeit-Modul

Beim Programmieren geht es nicht nur darum, eine Aufgabe zu erfüllen und eine Ausgabe zu erzielen, die wir erreichen wollten. Es geht auch darum, wie schnell ein Programm läuft und ausgeführt wird, damit die gewünschte Ausgabe erreicht wird. Bei den meisten Programmiersprachen ist es nicht einfach zu vergleichen, wie schnell ein Programm gelaufen ist, und es ist nie einfach, einen bestimmten Codeabschnitt zeitlich festzulegen, um zu verstehen, welcher Teil unseres Codes die meiste Zeit zur Ausführung benötigt taking. Dies ist das Problem, das von Python gelöst wird timeit Modul.

Python-Timeit-Modul

Python timeit -Modul ermöglicht es uns, die Ausführungszeit eines Codestücks zu bestimmen, ohne die Hintergrundprozesse zu berücksichtigen, die ausgeführt werden, um einen Code ausführbar zu machen. Wenn Sie etwas genaue Messungen der Leistung Ihres Codes benötigen timeit ist das Modul, für das man sich entscheiden sollte.

timeit einfaches Beispiel

Wir beginnen mit der Verwendung des timeit-Moduls direkt von der Eingabeaufforderung aus. Das timeit-Modul kann direkt über die CLI verwendet werden, wo wir eine einfache Schleifenanweisung eingeben und sie mit dem angezeigten Befehl timen können:

$ python --version
$ python -m timeit '"&".join(str(n) für n im Bereich(1000))'
$ python -m timeit '"&".join([str(n) für n im Bereich(1000)])'
$ python -m timeit '"&".join(map(str, range(1000)))'

Folgendes erhalten wir mit diesem Befehl zurück:

Zeitpunkt der Ausführung von CLI mit timeit

In einem der späteren Abschnitte werden wir lernen, wie wir die Anzahl der ausgeführten Schleifen verwalten können, um die optimale Anzahl für die Ausführung eines bestimmten Ausdrucks zu finden.

Timing eines Codes

Wenn Sie ein grundlegendes Python-Skript haben, für das Sie die Zeit messen möchten, ist das timeit-Modul der richtige Weg:

Importzeit
# Einrichtungscode wird nur einmal ausgeführt
setup_code = "von Math Import sqrt"
# Hauptcode-Snippet zur Leistungsprüfung
code_to_measure = "'
def beispiel():
meineliste = []
für x im Bereich (100):
meine Liste.anhängen(sqrt(x))
'"
# timeit-Anweisung
drucken (timeit.timeit(setup = setup_code,
stmt = code_to_measure,
Zahl = 10000))

Sehen wir uns die Ausgabe für diesen Befehl an:

Timing einer Schleife

In diesem Code haben wir auch gesehen, wie wir die Anzahl der Wiederholungen kontrollieren können, die das timeit-Modul durchführt, um den besten Ausführungszeitpunkt für das Programm zu finden.

Messen Sie die Zeit für mehrzeiligen Code von CLI

Wir können auch die Zeit für Code messen, der sich über mehrere Zeilen in der Python-CLI . erstreckt. Schauen wir uns ein Beispielprogramm an, um dies zu sehen:

$ python -m timeit -s \
> "linuxhint = " \
> "für n im Bereich (1000):" \
> " linuxhint[str(n)] = n"

Folgendes erhalten wir mit diesem Befehl zurück:

Timing von mehrzeiligem Code auf CLI

Im Allgemeinen zwei Codeblöcke vergleichen

Wenn Sie sich nicht mit der Verwendung von CLI herumschlagen möchten und nur zwei Python-Programme vergleichen möchten, um zu wissen, welches schneller läuft, gibt es einen ziemlich einfachen Weg, dies zu erreichen:

Importzeit
start = timeit.default_timer()
funcOne()
drucken (timeit.default_timer() - starten)
start = timeit.default_timer()
funcTwo()
drucken (timeit.default_timer() - starten)

Durch die Verwendung der Funktion default_timer() starten wir die Zeiten immer wieder, um einen Unterschied für dieselbe beim letzten Start zu finden. Dies kann nur verwendet werden, wenn Sie einen guten modularen Stil beim Schreiben von Code haben, sodass jeder Codeabschnitt separat gemessen werden kann.

Fazit

In dieser Lektion haben wir untersucht, wie wir unseren Code in Python zeitlich festlegen und deren zeitliche Komplexität und Effizienz erkennen und daran arbeiten können, wenn der Code zu langsam ist.

Beste Gamepad-Mapping-Apps für Linux
Wenn du Spiele unter Linux gerne mit einem Gamepad statt mit einem typischen Tastatur- und Maus-Eingabesystem spielst, gibt es einige nützliche Apps f...
Nützliche Tools für Linux-Spieler
Wenn Sie gerne unter Linux spielen, haben Sie wahrscheinlich Apps und Dienstprogramme wie Wine, Lutris und OBS Studio verwendet, um das Spielerlebnis ...
HD-Remastered-Spiele für Linux, die noch nie zuvor eine Linux-Version hatten
Viele Spieleentwickler und -herausgeber entwickeln HD-Remaster alter Spiele, um die Lebensdauer des Franchise zu verlängern. Bitte Fans, die Kompatibi...