使用 Time 模块测量经过的时间

新手上路,请多包涵

使用 python 中的时间模块是否可以测量经过的时间?如果是这样,我该怎么做?

我需要这样做,以便如果光标在小部件中停留了一段时间,就会发生事件。

原文由 rectangletangle 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 260
2 个回答
start_time = time.time()
# your code
elapsed_time = time.time() - start_time

您还可以编写简单的装饰器来简化各种函数执行时间的测量:

 import time
from functools import wraps

PROF_DATA = {}

def profile(fn):
    @wraps(fn)
    def with_profiling(*args, **kwargs):
        start_time = time.time()

        ret = fn(*args, **kwargs)

        elapsed_time = time.time() - start_time

        if fn.__name__ not in PROF_DATA:
            PROF_DATA[fn.__name__] = [0, []]
        PROF_DATA[fn.__name__][0] += 1
        PROF_DATA[fn.__name__][1].append(elapsed_time)

        return ret

    return with_profiling

def print_prof_data():
    for fname, data in PROF_DATA.items():
        max_time = max(data[1])
        avg_time = sum(data[1]) / len(data[1])
        print "Function %s called %d times. " % (fname, data[0]),
        print 'Execution time max: %.3f, average: %.3f' % (max_time, avg_time)

def clear_prof_data():
    global PROF_DATA
    PROF_DATA = {}

用法:

 @profile
def your_function(...):
    ...

您可以同时配置多个函数。然后打印测量值只需调用 print_prof_data():

原文由 Vadim Shender 发布,翻译遵循 CC BY-SA 3.0 许可协议

time.time() 将完成这项工作。

 import time

start = time.time()
# run your code
end = time.time()

elapsed = end - start

你可能想看看 这个 问题,但我认为没有必要。

原文由 lalli 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题