天天看點

python functools.lru_cache 的使用

from functools import lru_cache
@lru_cache(maxsize=1, typed=True)
def func(s):
    print(s)
    return s
func(1)
1
Out[4]: 1
func(1)
Out[5]: 1
func(2)
2
Out[6]: 2
func(2.0)
2.0
Out[7]: 2.0
           
  • 不難看出 第一次調用func 傳入1 是既列印了1 又傳回了1 第二次調用相同的func 傳入1時,未列印 隻傳回
  • 傳入2.0 和2的會被認為是不同的調用,重新整理緩存
  • lru_cache 的參數maxsize 代表能緩存幾個函數執行的結果 typed代表是否參數類型改變時是否重新緩存