函数运算缓存,顾名思义就是咱们能够针对指定的函数,让其记住过往参数输出和返回后果,使得后续接管到雷同的参数时跳过函数运算,间接返回已缓存的后果值。
很多敌人应该晓得 Python 规范库里 functools.lru_cache 能够做函数运算缓存,然而它的性能切实是太简陋了,像过期工夫设置之类的性能都没有。
而咱们能够应用第三方库 cachier 来代替,它的根本应用形式非常简单,应用 pip install cachier 实现装置后,咱们来看一个简略的示例:
这里咱们定义一个具备肯定运算耗时的函数,利用 cachier.cachier()装璜,并利用参数 stale_after 设置缓存到期工夫为 10 秒:
import time
from cachier import cachier
from datetime import timedelta
@cachier(stale_after=timedelta(seconds=10))
def demo(x: int, y: int):
time.sleep(2)
return x * y
for i in range(10):
print('-'*50)
print(f'第 {i+1} 次执行')
start = time.time()
demo(1, 1)
print(f'耗时 {round(time.time() - start, 2)} 秒')
time.sleep(2)
过程打印记录如下:
能够察看到,咱们的函数依照设定好的过期工夫进行着缓存。除此之外,cachier 还有很多其余实用个性,譬如基于 mongodb 实现分布式存储等
最近整顿了几百 G 的 Python 学习材料,蕴含新手入门电子书、教程、源码等等,收费分享给大家!想要的返回“Python 编程学习圈”,发送“J”即可收费取得