1

我有一个非常非常基本的记忆装饰器,我需要在下面进行优化:

def memoize(function):
    memos = {}
    def wrapper(*args):
        try:
            return memos[args]
        except KeyError:
            pass
        result = function(*args)
        memos[args] = result
        return result
    return wrapper

这样做的目的是使它不会添加到调用堆栈中。它现在实际上翻了一番。我意识到我可以将它嵌入到一个功能一个功能的基础上,但这不是我们想要的,因为我想要一个用于记忆的全局解决方案。有任何想法吗?

4

1 回答 1

3

如果您使用的是 Python 3.2,则可以只使用标准库:

import functools

@functools.lru_cache(maxsize=None)
def doit(...):
    ...

它很容易记住并且是标准库的一部分。

于 2012-09-20T07:27:40.030 回答