Python Timeit
-
Vorteile von
timeit
: -
Verwenden Sie das
timeit
-Modul, um die Ausführungszeit zweier Snippets zu vergleichen -
Verwendung von die Befehlszeilenschnittstelle des
timeit
-Moduls
Das timeit
-Modul ist eines der einfachsten und am leichtesten zu implementierenden Module unter allen Kategorie-Tools, die die Ausführung des Python-Codes profilieren. Das Tutorial behandelt die Verwendung und Implementierung des Moduls timeit
in Python.
Python enthält eine eingebaute Bibliothek timeit
, die die Ausführungszeit von winzigen Schnipseln des Python-Codes berechnen kann. Das Modul funktioniert, indem es den angegebenen Python-Code millionenfach ausführt und aus allen möglichen Ergebnissen die kürzeste Zeit vorhersagt, die während der Ausführung dieses Codes verstrichen ist.
Vorteile von timeit
:
- Bietet ein effizientes Ergebnis mit Präzision. Die Genauigkeit der durch diese Funktion wiedergegebenen Ausführungszeit ist einfach höher als bei Verwendung des einfachen
time
-Moduls. - Es führt das angegebene Code-Snippet über eine Million Mal aus, was viel relevantere Messwerte der während seiner Laufzeit verstrichenen Zeit bietet.
- Es verfügt außerdem neben der generischen aufrufbaren Schnittstelle über eine zusätzliche Befehlszeilenschnittstelle, die leicht zu verstehen und anzuwenden ist.
Lassen Sie uns im Folgenden die Syntax der Funktion timeit()
aus dem Modul timeit
darstellen und uns darauf konzentrieren.
timeit.timeit(stmt, setup, timer, number)
Die Funktion timeit.timeit()
nimmt vier Parameter auf, die alle zum besseren Verständnis der Funktion unten kurz erklärt wurden:
stmt
: Wie der Name schon sagt, ist es die Aussage, die gemessen werden muss. Der Standardwert ist in diesem Fallpass
.setup
: Bezeichnet den Code, der ausgeführt werden muss, bevorstmt
angegangen wird. Wieder einmal hat es eine Voreinstellung alspass
.timer
: Ein grundlegendestimeit.Timer
-Objekt. Es ist bereits ein anständiger Standardwert zugewiesen, der normalerweise nicht geändert werden muss.number
: Gibt die Anzahl der Durchläufe des angegebenen Codeschnipsels an, die der Programmierer ausführen möchte.
Wir werden verschiedene Beispiele sehen, wie die Funktion timeit.timeit()
aus dem Modul timeit
implementiert werden kann.
Verwenden das timeit
-Modul zur Berechnung der Ausführungszeit eines einfachen Code-Snippets
Diese Methode definiert ein Code-Snippet in einer Variablen zwischen dreifachen Anführungszeichen (''')
.
Der folgende Code verwendet das Modul timeit
zur Berechnung der Ausführungszeit eines einfachen Codeschnipsels.
import timeit
setup1 = "from math import sqrt"
code1 = """
def a():
list1 = []
for i in range(50):
list1.append(sqrt(i))
"""
print(timeit.timeit(setup=setup1, stmt=code1, number=10000))
Das obige Programm liefert die Ausgabe als Ausführungszeit in Sekunden. Diese Ausführungszeit ergibt sich aus einer Million Iterationen des gegebenen Codeschnipsels.
Wir sollten auch beachten, dass es gut ist, alle wesentlichen Importanweisungen in das Setup-Argument einzubeziehen.
Verwenden Sie das timeit
-Modul, um die Ausführungszeit zweier Snippets zu vergleichen
Das Modul timeit
kann auch verwendet werden, um die Ausführungszeit zweier vorgegebener Codeschnipsel zu vergleichen. Hier nehmen wir zwei Funktionen, die jeweils für Binäre Suche
und Lineare Suche
verwendet werden, und vergleichen ihre Ausführungszeiten.
Der folgende Code verwendet das Modul timeit
, um die Ausführungszeit zweier Snippets zu vergleichen.
import timeit
# function for binary search
def b_s(mylist, find):
while len(mylist) > 0:
mid = (len(mylist)) // 2
if mylist[mid] == find:
return True
elif mylist[mid] < find:
mylist = mylist[:mid]
else:
mylist = mylist[mid + 1 :]
return False
# function for linear search
def l_s(mylist, find):
for x in mylist:
if x == find:
return True
return False
def b_time():
SETUP_CODE = """
from __main__ import b_s
from random import randint"""
TEST_CODE = """
mylist = [x for x in range(10000)]
find = randint(0, len(mylist))
b_s(mylist, find)"""
times = timeit.repeat(setup=SETUP_CODE, stmt=TEST_CODE, repeat=3, number=10000)
print("Binary search time: {}".format(min(times)))
def l_time():
SETUP_CODE = """
from __main__ import l_s
from random import randint"""
TEST_CODE = """
mylist = [x for x in range(10000)]
find = randint(0, len(mylist))
l_s(mylist, find)
"""
times = timeit.repeat(setup=SETUP_CODE, stmt=TEST_CODE, repeat=3, number=10000)
print("Linear search time: {}".format(min(times)))
if __name__ == "__main__":
l_time()
b_time()
Verwendung von die Befehlszeilenschnittstelle des timeit
-Moduls
Nehmen wir einen einfachen Funktionscode und seine Syntax in der Befehlszeilenschnittstelle und gehen alle Argumente einzeln an.
Der folgende Code verwendet die Befehlszeilenschnittstelle des timeit
-Moduls.
C:\Windows\System32>python3 -m timeit -s "from math import sqrt" -n 10000 -r 5 'a = sqrt(34532)'
Hier haben wir die gleiche Funktion wie im ersten Beispiel des Artikels genommen.
Betrachten wir weiter alle Argumente, die hier in der Befehlszeilenschnittstelle verwendet werden.
timeit
: Ein einfaches Positionsargument, das die Existenz und Verwendung destimeit
-Moduls angibt.-s
: Das Setup-Argument.-n
: Das Zahlenargument.-r
: Das wiederholte Argument (optional).'code snippet'
: Der Code-Snippet wird direkt in einfache Anführungszeichen in die Befehlszeilenschnittstelle geschrieben.
Vaibhhav is an IT professional who has a strong-hold in Python programming and various projects under his belt. He has an eagerness to discover new things and is a quick learner.
LinkedIn