我有一个非常非常基本的memoization装饰器,我需要在下面进行优化:
def memoize(function):
memos = {}
def wrapper(*args):
try:
return memos[args]
except KeyError:
pass
result = function(*args)
memos[args] = result
return result
return wrapper
目标是使其不会添加到调用堆栈。它现在实际上是两倍。我意识到我可以将它嵌入到函数的基础上,但这并不是我所希望的,因为我想要一个全局的memoizing解决方案。有什么想法吗?
答案 0 :(得分:3)
如果您使用的是Python 3.2,则可以使用标准库:
import functools
@functools.lru_cache(maxsize=None)
def doit(...):
...
它很容易记住并且是标准库的一部分。