【发布时间】:2017-08-28 20:56:43
【问题描述】:
我有一个递归函数,上面有一个 functools.lru_cache() 装饰器。我想多次从空缓存中计时执行它。一种方法是每次清除缓存,但这包括缓存清除时间。
这是我目前拥有的:
@functools.lru_cache(maxsize=None)
def recursive_function(n):
# ...
return sum(recursive_function(n - i) * b for i, b in enumerate(other_list))
def time(number, n):
return timeit.timeit(
'f({}); f.cache_clear()'.format(n),
'from {} import recursive_function as f'.format(__name__),
number=number
)
我仍然想用 a 缓存来计时,因为缓存会以指数方式减少时间,但是在调用一次之后,再次调用它需要大约 0 毫秒,因为它只是获取缓存的值.
有没有办法在timeit.timeit 中的语句之间做一些事情而不计入时间?还是在 cache_clear 之前暂停计时器?
【问题讨论】:
-
我的错,我读错了
标签: python performance caching time