lru_cache模块
functools.lru_cache 是装饰器,它实现了备忘(memoization)功能。这是一 项优化技术,它把耗时的函数的结果保存起来,避免传入相同的参数时重复计算。LRU 三 个字母是“Least Recently Used”的缩写,表明缓存不会无限制增长,一段时间不用的缓存 条目会被扔掉。
maxsize 参数指定存储多少个调用的结果。缓存满了之后,旧的结果会被扔掉,腾出空间,为了得到最佳性能,maxsize 应该设为 2 的幂。
typed 参数如果设为 True,把不同参数类型 得到的结果分开保存,即把通常认为相等的浮点数和整数参数(如 1 和 1.0)区分开。
因为 lru_cache 使用字典存储结果,而且键根据调用时传入的定位参数和关键字参数创建,所以被 lru_cache 装饰的函数,它的所有参数都必须是可散列的。