gpt4 book ai didi

python - timeit 吃掉返回值

转载 作者:太空宇宙 更新时间:2023-11-04 03:51:51 26 4
gpt4 key购买 nike

我想以便宜的方式测量函数的执行时间,如下所示:

def my_timeit(func, *args, **kwargs):
t0 = time.time()
result = func(*args, **kwargs)
delta = time.time() - t0
return delta, result

def foo():
time.sleep(1.23)
return 'potato'

delta, result = my_timeit(foo)

但我想使用 timeitprofile 或其他内置功能来处理由于平台差异而导致的任何常见陷阱,而且可能更好获取实际执行时间而不是墙上时间。

我尝试使用 timeit.Timer(foo).timeit(number=1) 但界面似乎模糊了返回值。

最佳答案

这是我目前的尝试。但我欢迎任何建议,因为这感觉太老套了,可能需要改进。

import time
from timeit import Timer

def my_timeit(func, *args, **kwargs):
output_container = []
def wrapper():
output_container.append(func(*args, **kwargs))
timer = Timer(wrapper)
delta = timer.timeit(1)
return delta, output_container.pop()

def foo():
time.sleep(1.111)
return 'potato'

delta, result = my_timeit(foo)

编辑: 适合作为以下装饰器工作:

def timeit_decorator(the_func):

@functools.wraps(the_func)
def my_timeit(*args, **kwargs):
output_container = []
def wrapper():
output_container.append(the_func(*args, **kwargs))
timer = Timer(wrapper)
delta = timer.timeit(1)
my_timeit.last_execution_time = delta
return output_container.pop()

return my_timeit

关于python - timeit 吃掉返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20974147/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com