特别是 在使用递归代码时, lru_cache
有了巨大的改进。我确实知道缓存是一个空间,用于存储必须快速提供的数据并避免计算机重新计算。
functools 中的 Python lru_cache
如何在内部工作?
我正在寻找一个具体的答案,它是否像 Python 的其余部分一样使用字典?它只存储 return
值吗?
我知道 Python 很大程度上建立在字典之上,但是,我找不到这个问题的具体答案。希望有人可以为 StackOverflow 上的所有用户简化这个答案。
原文由 innicoder 发布,翻译遵循 CC BY-SA 4.0 许可协议
functools
源代码可在此处获得: https ://github.com/python/cpython/blob/master/Lib/functools.pylru_cache
使用_lru_cache_wrapper
装饰器(带参数模式的python装饰器)它有一个cache
在它保存函数 的上下文 中调用的字典装饰函数将有自己的缓存字典)。字典键是使用参数中的_make_key
函数生成的。在下面添加了一些大胆的评论: