0
ジェネレータを使用して最後に呼び出した後の経過時間を返すスニペットを書きました。タイミング解析用のPythonジェネレータを返す
def time_gen(start_time):
start = start_time
while True:
elapsed = time.time() - start
start = time.time()
yield elapsed
def test():
a = time_gen(time.time())
for i in range(4):
time.sleep(1)
print(a.next()) #prints about 1 second
うまくいくようです。しかし私は、ユーザーが開始時間にどのように渡す必要があるのか好きではありません。すでにパラメータとして渡された開始時刻を持つジェネレータを返す関数を書く方法がありますか?
#Broken Code
def time_closure():
def time_gen(start_time):
start = start_time
while True:
elapsed = time.time() - start
start = time.time()
yield elapsed
a = time_gen(time.time())
return a
#Usage of Broken Code
a = time_closure()
a.next()
2番目のコードスニペットが壊れているとはどういう意味ですか? – user2357112
あなたは正しいです。それは動作します。私のreplに問題がありました。私がipythonに貼り付けたとき、それは返品について不平を言った。私はジェネレータを理解していなかったためだと思っていましたが、実際は空白のエラーでした。同じ問題を抱えている人は、ipythonで%pasteマクロを使用してください。 – user514156