Я написал фрагмент, который использует генераторы для возврата прошедшего времени с момента последнего вызова.Возврат генератора питона для анализа времени
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()
Почему вы говорите, что ваш второй фрагмент кода сломан? – user2357112
О, вы правы. Он работает. С моей репликой возникла проблема. Когда я вложил его в ipython, он пожаловался на возвращение. Я думал, что это потому, что я не понял генераторов, но на самом деле это была просто ошибка в пробеле. Для тех, кто имеет такую же проблему, используйте макрос% paste в ipython. – user514156