Ich habe den Code immer gelesen, um die Zeit folgendermaßen zu berechnen:
%timeit function()
Können Sie erklären, was hier "%" bedeutet?
Ich denke, das "%" wird immer verwendet, um etwas in einer Zeichenfolge zu ersetzen, wie% s bedeutet, dass eine Zeichenfolge ersetzt wird,% d, um Daten zu ersetzen, aber ich habe keine Ahnung von diesem Fall.
Antworten:
%timeit
ist eine ipython-Zauberfunktion , mit der ein bestimmter Code zeitlich festgelegt werden kann (eine einzelne Ausführungsanweisung oder eine einzelne Methode).Aus den Dokumenten:
Um es zu verwenden, zum Beispiel, wenn wir herausfinden möchten, ob die Verwendung
xrange
schneller ist als die Verwendungrange
, können Sie einfach Folgendes tun:Und Sie werden die Timings für sie bekommen.
Der Hauptvorteil von
%timeit
sind:Sie müssen nicht
timeit.timeit
aus der Standardbibliothek importieren und den Code mehrmals ausführen, um herauszufinden, welcher Ansatz der bessere ist.% timeit berechnet automatisch die Anzahl der für Ihren Code erforderlichen Läufe basierend auf einem Ausführungsfenster von insgesamt 2 Sekunden.
Sie können auch aktuelle Konsolenvariablen verwenden, ohne das gesamte Code-Snippet
timeit.timeit
zu übergeben, um die Variable zu erstellen, die in einer anderen Umgebung erstellt wurde, in der timeit funktioniert.quelle
%timeit function()
timer.timeit
- ist das ein tatsächlicher Modulname ?10000 loops, best of 3: 29.6 µs per loop
kann wie folgt interpretiert werden: (1.) Der Ausdruck wird 10000 Mal ausgeführt, um die Gesamtzeit zu erhalten. (2.) Dann wird die Gesamtzeit durch 10000 geteilt, um die Zeit "pro Schleife" zu erhalten. (3.) Die Gesamtzeitberechnung wird durchgeführt 3 Mal und schließlich (4.) der 3 Gesamtzeiten wird die minimale Gesamtzeit (auch als "Best of 3" bezeichnet) als Ausgabe verwendet. Ist meine Interpretation richtig, ja / nein?Dies wird als eine bekannte Linie Magie in ipython. Sie sind insofern einzigartig, als ihre Argumente nur bis zum Ende der aktuellen Zeile reichen und die Magie selbst für die Befehlszeilenentwicklung wirklich strukturiert ist.
timeit
wird verwendet, um die Ausführung von Code zeitlich zu steuern.Wenn Sie alle Magie sehen möchten, die Sie verwenden können, können Sie einfach Folgendes eingeben:
um eine Liste sowohl der Linienmagie als auch der Zellmagie zu erhalten.
Einige weitere magische Informationen aus der Dokumentation hier :
Je nachdem , ob Sie in Zeile oder Zelle - Modus gibt es zwei verschiedene Arten zu verwenden
%timeit
. Ihre Frage zeigt den ersten Weg:vs.
quelle
IPython fängt diese ab, sie werden als integrierte magische Befehle bezeichnet. Hier ist die Liste: https://ipython.org/ipython-doc/dev/interactive/magics.html
Sie können auch Ihre eigenen benutzerdefinierten Magics erstellen: https://ipython.org/ipython-doc/dev/config/custommagics.html
Sie
timeit
sind hier https://ipython.org/ipython-doc/dev/interactive/magics.html#magic-timeitquelle
Ich möchte nur einen weiteren nützlichen Vorteil der Verwendung von% timeit hinzufügen, um mit mu 無 zu antworten :
PS: Ich weiß, dass dies ein Kommentar sein sollte, um oben zu antworten, aber ich habe derzeit nicht genug Ruf dafür. Ich hoffe, dass das, was ich schreibe, für jemanden hilfreich ist und mir hilft, genug Ruf zu verdienen, um es beim nächsten Mal zu kommentieren.
quelle
Ich wollte nur einen sehr subtilen Punkt über %% timeit hinzufügen. Wenn die "Magie" in der Zelle ausgeführt wird , wird eine Fehlermeldung angezeigt ...
UsageError: Line Magic-Funktion
%%timeit
nicht gefunden... wenn es Code- / Kommentarzeilen über %% timeit gibt. Mit anderen Worten, stellen Sie sicher, dass %% timeit der erste Befehl in Ihrer Zelle ist.
Ich weiß, dass es ein kleiner Punkt ist, zu dem alle Experten duh sagen werden, aber ich wollte nur meinen halben Cent für die jungen Zauberer hinzufügen, die mit Zaubertricks beginnen.
quelle
Der Zeilenmagie wird das Zeichen % vorangestellt und funktioniert ähnlich wie bei Befehlszeilenaufrufen des Betriebssystems: Sie erhalten als Argument den Rest der Zeile, in der Argumente ohne Klammern oder Anführungszeichen übergeben werden. Der Zellmagie wird ein doppeltes %% vorangestellt , und es handelt sich um Funktionen, die als Argument nicht nur den Rest der Zeile, sondern auch die Zeilen darunter in einem separaten Argument erhalten.
quelle