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)