3
一般問題:如何訪問函數閉包中的變量?訪問lru_cache的緩存
特定問題:如何從包含functools.lru_cache()
的Python函數訪問原始cache
?
如果我memoize的一個功能(例如,從docs截取)...
@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)
當fib()
被memoized,lru_cache
添加cache_info()
和cache_clear()
功能包裝。 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