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 に答える