0
생성자를 사용하여 마지막으로 호출 된 이후의 경과 시간을 반환하는 스 니펫을 작성했습니다.타이밍 분석을위한 파이썬 생성기 반환
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
아, 맞습니다. 그것은 효과가있다. 내 repl에 문제가있었습니다. ipython에 붙여 넣을 때 반환에 대해 불평했습니다. 나는 발전기를 이해하지 못했기 때문에 이것이라고 생각했지만 실제로는 공백 오류였다. 같은 문제가있는 사람이라면 ipython에서 % paste 매크로를 사용하십시오. – user514156