Python 访问lru缓存&x27;s缓存

Python 访问lru缓存&x27;s缓存,python,python-3.x,caching,scope,Python,Python 3.x,Caching,Scope,一般问题:如何访问函数闭包中的变量 特定问题:如何从用functools.lru\u cache()包装的python函数访问原始的缓存 如果我记忆一个函数(示例取自…) @lru\u缓存(maxsize=None) def纤维(n): 如果n>>[fib(n)表示范围(16)内的n] [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610] >>>fib.cache_info() CacheInfo(点击次数=28次,未命中次数

一般问题:如何访问函数闭包中的变量

特定问题:如何从用
functools.lru\u cache()
包装的python函数访问原始的
缓存

如果我记忆一个函数(示例取自…)

@lru\u缓存(maxsize=None)
def纤维(n):
如果n<2:
返回n
返回fib(n-1)+fib(n-2)
>>>[fib(n)表示范围(16)内的n]
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610]
>>>fib.cache_info()
CacheInfo(点击次数=28次,未命中次数=16次,maxsize=None,currsize=16次)
这里定义了
缓存

当记忆
fib()
时,
lru\u cache
cache\u info()
cache\u clear()
函数添加到包装器中
cache\u clear()
可以访问
cache
,我也可以访问
cache\u clear()
,所以我可以用它直接访问
cache

您可以使用它。您可以告诉它缓存到一个


或者,看看developed by.

它似乎不是您应该能够做的事情,它是该函数中的一个局部变量。你唯一的希望就是反思。你为什么要这么做?为什么?因为我能。真的为什么?我想在开发过程中在重新启动之间保持缓存。您读过吗?虽然您可以这样做,但通过大量脆弱的实现细节,最好只使用您自己的备忘录实现。相关:
@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)