import contextlib
import time
@contextlib.contextmanager
def time_print(task_name):
t = time.time()
try:
yield
finally:
print task_name, "took", time.time() - t, "seconds."
def doproc():
x=1+1
with time_print("processes"):
[doproc() for _ in range(500)]
# processes took 15.236166954 seconds.
このデコレータを使用するとdopocが実行されるのはいつですか?
[docs:](https://docs.python.org/2/library/contextlib.html#contextlib。contextmanager) "ジェネレータが発生する時点で、with文にネストされたブロックが実行され、ブロックが終了した後にジェネレータが再開されます。ブロックで未処理の例外が発生した場合、どこで収穫が起こったのか」 –
引数なしの 'yield'は意味的に' yield None'と等価です –