一般的な問題:関数の終了時に変数にアクセスするにはどうすればよいですか?lru_cacheのキャッシュにアクセスする
具体的な問題:どのように私はfunctools.lru_cache()
で包まれたPython関数からの生cache
にアクセスすることができますか? https://github.com/python/cpython/blob/f0851910eb8e711bf8f22165cb0df33bb27b09d6/Lib/functools.py#L491
fib()
がメモ化されると、lru_cache
はcache_info()
とcache_clear()
機能を追加します:cache
が定義されているのはここ
@lru_cache(maxsize=None)
def fib(n):
if n < 2:
return n
return fib(n-1) + fib(n-2)
>>> [fib(n) for n in range(16)]
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610]
>>> fib.cache_info()
CacheInfo(hits=28, misses=16, maxsize=None, currsize=16)
がある
私は、関数(docsから取られた例)をmemoizeなら...ラッパーに。 cache_clear()
にはcache
へのアクセス権があり、cache_clear()
へのアクセス権を持っていますので、何とかアクセスしてcache
に直接アクセスできますか?
それはあなたができるはずのようではありません、それはその関数のローカル変数です。あなたが持っている唯一の希望は反映です。なぜあなたはこれをやろうとしていますか? –
なぜですか?出来るからです。ほんとに?なんで?私は開発中に再起動の間にキャッシュを保持したい。 – gdw2
[this](https://stackoverflow.com/questions/15585493/store-the-cache-to-a-file-functools-lru-cache-in-python-3-2)を読んでいますか? – idjaw