runquery
データベースを呼び出してから行を 1 つずつ生成するという関数があります。memoize デコレータを作成しました (または、より正確には、この stackoverflow questionから 1 つ盗みました) が、その後の呼び出しでは、おそらくジェネレータの値を 1 回しか生成できないため、空のシーケンスが生成されます。
Python ジェネレーターで機能するメモ化デコレーターを変更するにはどうすればよいですか? ある時点でメモリに保存する必要があることはわかっていますが、これをデコレータ内で処理し、元の関数を変更したくありません。
メモ化関数の現在のコードは次のとおりです。
def memoized(f):
# Warning: Doesn't work if f yields values
cache={}
def ret(*args):
if args in cache:
return cache[args]
else:
answer=f(*args)
cache[args]=answer
return answer
return ret