Heim > Artikel > Backend-Entwicklung > So fügen Sie zusätzliches Verhalten vor und nach der Ausführung einer Python-Funktion hinzu
Schauen wir uns zunächst ein kleines Programm an. Dies ist ein Programm, das die aufgewendete Zeit misst. Im Folgenden finden Sie Beispiele für frühere Lösungen
from functools import wraps, partial from time import time def timing(func=None, frequencies=1): if func is None: # print("+None") return partial(timing, frequencies=frequencies) # else: # print("-None") @wraps(func) def _wrapper(*args, **kwargs): start_time = time() for t in range(frequencies): result = func(*args, **kwargs) end_time = time() print('运行花费时间:{:.6f}s。'.format(end_time-start_time)) return result return _wrapper @timing def run(): l = [] for i in range(5000000): l.extend([i]) return len(l)
läuft wie folgt:
In [4]: run() 运行花费时间:2.383398s。 Out[4]: 5000000(Wenn Sie tiefer nachfragen möchten, können Sie die Kommentare entfernen und darüber nachdenken, welche Art von Ausgabe erwartet wird.)
Heute habe ich zufällig den Kontextmanager von Python (
) gesehen und fand ihn sehr gut. Tatsächlich hängt er eng mit der Context Manager
-Anweisung zusammen und war mir noch nie zuvor aufgefallen. with
from time import time def run2(): l = [] for i in range(5000000): l.extend([i]) return len(l) class ElapsedTime(): def __enter__(self): self.start_time = time() return self def __exit__(self, exception_type, exception_value, traceback): self.end_time = time() print('运行花费时间:{:.6f}s。'.format(self.end_time - self.start_time)) with ElapsedTime(): run2()
Zusammenfassung
Nach einem kurzen Blick auf die offizielle Dokumentation ist die Kontextverwaltung immer noch etwas kompliziert. Python hat sich bis heute weiterentwickelt und ist eigentlich nicht mehr einfach. Um es einfach auszudrücken: Sie gehen einfach nicht mit der Zeit und beherrschen nur die altmodische Dreiaxt. Daher muss das Wissen ständig aktualisiert werden, um Ihre blinden Flecken auszugleichen. Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er kann jedem beim Lernen oder Arbeiten helfen.