Python Timeit() mit Beispielen

โšก Intelligente Zusammenfassung

Python Die Funktion `timeit()` misst die Ausfรผhrungszeit eines kleinen Codeabschnitts, indem sie diesen mehrmals ausfรผhrt und die kรผrzeste Dauer zurรผckgibt. Sie unterstรผtzt die Methoden `timeit`, `repeat` und `default_timer` und kann sowohl in Skripten als auch รผber die Kommandozeile aufgerufen werden.

  • ๏ธ Timeit definiert: Misst die Ausfรผhrungszeit eines Code-Snippets und gibt das Minimum รผber viele Durchlรคufe zurรผck.
  • ๐Ÿงฉ Parameter: stmt, setup, timer und number steuern, was wie oft ausgefรผhrt wird.
  • ๐Ÿ” Methods: timeit(), repeat() und default_timer() bieten unterschiedliche Zeitsteuerungsoptionen.
  • ๐Ÿ’ป Befehlszeile: Fรผhren Sie python -m timeit mit Optionen wie -n, -r und -s aus.
  • โœ… Warum es verwenden: Deaktiviert die automatische Speicherbereinigung und wรคhlt den genauesten Timer pro Betriebssystem aus.

Python Timeit()

Was ist Python Zeit es()?

Python timeit() ist eine Methode in Python Bibliothek, um die Ausfรผhrungszeit des angegebenen Codeausschnitts zu messen. Die Python Die Bibliothek fรผhrt die Codeanweisung 1 Million Mal aus und gibt die Mindestzeit an, die fรผr den angegebenen Satz von Codeausschnitten benรถtigt wird. Python timeit() ist eine nรผtzliche Methode, mit deren Hilfe die Leistung des Codes รผberprรผft werden kann.

Syntax

timeit.timeit(stmt, setup,timer, number)

KenngrรถรŸen

  • Anw: Hiermit wird der Code รผbernommen, dessen Ausfรผhrungszeit Sie messen mรถchten. Der Standardwert ist โ€žpassโ€œ.
  • -Setup: Hier werden Setup-Details angezeigt, die vor stmt ausgefรผhrt werden mรผssen. Der Standardwert ist โ€žpassโ€œ.
  • Timer: Dies wird den Timerwert haben, timeit() hat bereits einen Standardwert festgelegt und wir kรถnnen ihn ignorieren.
  • Anzahl: Der stmt wird gemรครŸ der hier angegebenen Nummer ausgefรผhrt. Der Standardwert ist 1000000.

Um mit timeit() zu arbeiten, mรผssen wir das Modul importieren, wie unten gezeigt:

import timeit

Erstes Beispiel

Hier ist ein einfaches Beispiel fรผr die Funktion timeit()

Code Beispiel 1

# testing timeit()
import timeit
print(timeit.timeit('output = 10*5'))

Ausgang:

0.06127880399999999

Wir haben ein einfaches Beispiel gesehen, das uns die Ausfรผhrungszeit der einfachen Code-Anweisungsausgabe = 10*5 gibt, und die Zeit, die fรผr die Ausfรผhrung benรถtigt wird, betrรคgt 0.06127880399999999.

Timing Mehrere Zeilen im Python-Code

Es gibt zwei Mรถglichkeiten, mehrere Codezeilen in timeit.timeit() auszufรผhren: durch Trennen der Zeilen durch Semikolons oder durch EinschlieรŸen des Codes als Zeichenfolge in dreifache Anfรผhrungszeichen.

Hier sind Beispiele, die die Funktionsweise zeigen.

Beispiel 1: Verwendung eines Semikolons

import timeit
print("The time taken is ",timeit.timeit(stmt='a=10;b=10;sum=a+b'))

Ausgang:

The time taken is  0.137031482

Beispiel 2: Verwendung von dreifachen Anfรผhrungszeichen

import timeit
import_module = "import random"
testcode = '''
def test():
    return random.randint(10, 100)
'''
print(timeit.repeat(stmt=testcode, setup=import_module))

Ausgang:

C:\pythontest>python testtimeit.py
The time taken is  0.182619178

timeit โ€“ Methoden

Hier sind zwei wichtige Timeit-Methoden

timeit.default_timer() : Dies gibt bei der Ausfรผhrung die Standardzeit zurรผck.

timeit.repeat(stmt, setup, timer, wiederholen, anzahl) : wie timeit() , aber mit โ€žrepeatโ€œ wird timeit() aufgerufen, wie oft wiederholt wird.

Programmbeispiel 1

# testing timeit()
import timeit
import_module = "import random"
testcode = '''
def test():
    return random.randint(10, 100)
'''
print(timeit.timeit(stmt=testcode, setup=import_module))

Ausgang:

0.46715912400000004

Beispiel 2

Beispiel fรผr default_timer()

# testing timeit()

import timeit
import random

def test():
    return random.randint(10, 100)

starttime = timeit.default_timer()
print("The start time is :",starttime)
test()
print("The time difference is :", timeit.default_timer() - starttime)

Ausgang:

The start time is : 0.220261875
The time difference is : 0.0004737320000000045

Beispiel 3: timeit.repeat()

# testing timeit()
import timeit
import_module = "import random"
testcode = '''
def test():
    return random.randint(10, 100)
'''
print(timeit.repeat(stmt=testcode, setup=import_module, repeat=5))

Ausgang:

 [0.43638873, 0.5040939680000001, 0.5069179909999999, 0.3943449330000002, 0.3546886979999999]

timeit.repeat() funktioniert รคhnlich wie die Funktion timeit.timeit(), mit dem einzigen Unterschied, dass sie das Wiederholungsargument berรผcksichtigt und die Ausfรผhrungszeit im Array-Format mit Werten gemรครŸ der Wiederholungsnummer zurรผckgibt.

Ausfรผhrung der Timing-Funktion timeit.timeit() innerhalb der Befehlszeilenschnittstelle

Die Syntax zum Ausfรผhren Ihrer Funktion innerhalb von timeit() auf der Befehlszeile lautet wie folgt:

python -m timeit [-n N] [-r N] [-s S] [-t] [-c] [-h] [code statement ...]

Befehlszeilenparameter:

  • -n N: Die Hรคufigkeit, mit der der Code ausgefรผhrt werden soll.
  • -r N: die Hรคufigkeit, mit der die Funktion timeit() wiederholt werden soll
  • -s S: Hier werden Setup-Details angezeigt, die vor der Codeausfรผhrung ausgefรผhrt werden.
  • -t: Hierfรผr kรถnnen Sie time.time() nutzen
  • -c: Hierfรผr kรถnnen Sie time.clock() nutzen
  • -h: fรผr Hilfe
  • Codeanweisung: Die Codedetails.

Beispiel

C:\pythontest>python -m timeit -s 'text="hello world"'
20000000 loops, best of 5: 13.1 nsec per loop

Eine weitere Mรถglichkeit zur Ausfรผhrung innerhalb der Befehlszeile ist die folgende:

Beispiel

>>> import timeit
>>> print("The time taken is ",timeit.timeit(stmt='a=10;b=10;sum=a+b'))
The time taken is  0.15048536300000137
>>>

Warum ist timeit() die beste Methode zur Messung der Ausfรผhrungszeit von Python Code?

Hier sind einige Grรผnde, warum wir timeit() fรผr die beste Methode zur Messung der Ausfรผhrungszeit halten.

  • Es fรผhrt die Codeanweisung 1 Million Mal aus, was dem Standardwert entspricht, und gibt Ihnen daraus die minimal benรถtigte Zeit zurรผck. Sie kรถnnen die 1 Million auch erhรถhen/verringern, indem Sie das Argument number in der Funktion time() festlegen.
  • Wรคhrend der Testausfรผhrung wird die Garbage Collection jedes Mal durch die Funktion time() deaktiviert.
  • timeit() nimmt intern die genaue Zeit gemรครŸ Ihrem verwendeten Betriebssystem. Beispielsweise wird time.clock() verwendet fรผr Windows Betriebssystem und time.time() fรผr Mac und Linux.

Hรคufig gestellte Fragen

`timeit.timeit()` fรผhrt die Anweisung eine festgelegte Anzahl von Malen aus und gibt eine einzelne Gesamtzeit zurรผck. `timeit.repeat()` fรผhrt die gesamte Messung mehrmals aus und gibt eine Liste von Ergebnissen zurรผck, aus der Sie das beste auswรคhlen kรถnnen.

timeit deaktiviert die automatische Speicherbereinigung wรคhrend der Messung, sodass Hintergrundprozesse die Zeitmessung nicht verfรคlschen. Dadurch werden die Ergebnisse konsistenter und vergleichbarer, da der Fokus ausschlieรŸlich auf der Ausfรผhrungszeit des getesteten Codeabschnitts liegt.

Sie kรถnnen Anweisungen innerhalb der Zeichenkette `stmt` durch Semikolons trennen oder eine mehrzeilige Zeichenkette in dreifache Anfรผhrungszeichen setzen. Funktionen definieren Sie in `setup` und rufen sie aus `stmt` auf.

KI kann Code analysieren, langsame Schleifen oder teure Aufrufe identifizieren, vektorisierte oder integrierte Alternativen vorschlagen und bessere Datenstrukturen empfehlen.ping Die Entwickler konzentrieren sich bei der Optimierung auf die Bereiche, in denen timeit die grรถรŸten Engpรคsse aufzeigt.

Ja. Anhand eines Codeausschnitts und dessen timeit-Ergebnissen kann die KI Umschreibungen wie List Comprehensions, Generatorausdrรผcke oder Bibliotheksfunktionen vorschlagen. AnschlieรŸend fรผhrt man timeit erneut aus, um zu bestรคtigen, dass die Verbesserung tatsรคchlich besteht.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: