Sie können die Zeit mit mit messen. Es kann verwendet werden, wenn die Zeit mit Kaggle usw. gemessen wird.
Verwendet in Mercari Competition 1st Code ..
Schreiben Sie einfach @contextmanager, bevor Sie die Funktion definieren, die Sie als Kontextmanager verwenden möchten.
Wenn der Timer aufgerufen wird, wird die Anfangszeit in t0 gespeichert und yeild verlässt die temporäre Funktion. Nachdem die Verarbeitung von time.sleep (1) abgeschlossen ist, kehrt es wieder zum Timer zurück und gibt die Differenz zur Anfangszeit aus.
qiita.rb
from contextlib import contextmanager
import time
@contextmanager
def timer(name):
t0 = time.time()
print("start")
yield
print("end")
print(f'[{name}] done in {time.time() - t0:.0f} s')
with timer('process train'):
time.sleep(1)
Wenn @contextmanager nicht beschrieben wird, kann der Timer nicht als Kontextmanager fungieren und es tritt ein Fehler auf.
[mit Protokoll und Kontextmanager] (https://docs.python.org/ja/3/reference/datamodel.html#context-managers "Qiita") Der Kontextmanager übernimmt die Eingangs- und Ausgangsverarbeitung, die zum Ausführen von Codeblöcken erforderlich ist.
Wie im folgenden Beispiel gezeigt, beschreibt die Kontextmanagerklasse den Prozess zum Starten und den Prozess zum Beenden. Wenn Sie es mit @contextmanager zu einem Kontextmanager machen, wird der Timer am Anfang und am Ende aufgerufen. Wenn @contextmanager nicht beschrieben wird, tritt ein Fehler auf, weil enter nicht definiert ist. Referenz
Recommended Posts