我写了一个代码片段,它使用生成器返回自上次调用以来的运行时间。
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()发布于 2016-12-07 02:10:59
您不必将启动时间传递给生成器。您可以只在其第一行执行start = time.time(),其余内容保持原样
https://stackoverflow.com/questions/41001937
复制相似问题