前情提要:做 leetcode 题时发现自己练习时长两年半也没能记住这个方法,依然在第一次提交中超时,因此决定一定要整一个错题本里的方法记录,否则也太难过了。
链接:https://blog.csdn.net/qq_42906799/article/details/127009486
lru_cache,首先要理解这个函数是什么
LRU-least recently used-最近最少使用算法,是一种内存数据淘汰策略,使>用常见是当内存不足时,需要淘汰最近最少使用的数据。LRU常用语缓存系>统的淘汰策略。
因此,所谓的 lru_cache 就是满足一定储存规则的储存容器,它在函数输入相同参数的时候直接调用存储的返回值,无需重新计算。这里@functools.lru_cache(None)实际上是无界存储,也就是并没有LRU的参与。
import functools
@functools.lru_cache(maxsize=100)
def sum(a, b):
print("is calculating a+b")
return a+b
t1 = sum(1, 1)
print(t1)
t2 = sum(1, 1)
print(t2)
'''
=>
is calculating a+b
2
2
'''