如何在Python中缓存方法调用?
缓存方法的两个工具是functools.cached_property()和functools.lru_cache()。两个模块都是functools模块的一部分。functools模块用于高阶函数:作用于其他函数或返回其他函数的函数。让我们先安装并导入functools模块。
安装functools
要安装functools模块,请使用pip –
导入functools
要导入functools –
让我们逐一理解两个缓存方法 –
cached_property()
对于实例的昂贵计算属性非常有用,因为这些属性在其他方面是有效不可变的。
cached_property方法只适用于不带任何参数的方法。它不会创建对实例的引用。缓存的方法结果仅在实例存活时保留。
优点是当实例不再使用时,缓存的方法结果将立即释放。缺点是如果实例积累,则方法结果也会积累。它们可以无限增长。
示例
让我们看一个示例 –
lru_cache
lru_cache方法适用于具有可哈希参数的方法。它会创建对实例的引用,除非特殊的努力传递弱引用。
最近最少使用算法的优点是缓存由指定的maxsize界定。缺点是实例保持存活直到它们过时或者缓存被清除。
示例
让我们看一个示例 –
使用缓存计算斐波那契数列的示例 –
输出
缓存示例
现在,让我们看一下functool cached_property()和lru_cache的完整示例 –