返回python生成器进行时序分析

时间:2016-12-06 18:03:10

标签: python profiling generator

我写了一个片段,它使用生成器来返回自上次调用以来经过的时间。

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()

1 个答案:

答案 0 :(得分:-1)

您不必将开始时间传递给生成器。您可以在第一行中执行map.put(key, map.containsKey(key) ? map.get(key) + 1 : 1); ,其余部分保留原样