函数运算缓存,顾名思义就是咱们能够针对指定的函数,让其记住过往参数输出和返回后果,使得后续接管到雷同的参数时跳过函数运算,间接返回已缓存的后果值。
很多敌人应该晓得Python规范库里functools.lru_cache能够做函数运算缓存,然而它的性能切实是太简陋了,像过期工夫设置之类的性能都没有。
而咱们能够应用第三方库cachier来代替,它的根本应用形式非常简单,应用pip install cachier实现装置后,咱们来看一个简略的示例:
这里咱们定义一个具备肯定运算耗时的函数,利用cachier.cachier()装璜,并利用参数stale_after设置缓存到期工夫为10秒:
import timefrom cachier import cachierfrom datetime import timedelta@cachier(stale_after=timedelta(seconds=10))def demo(x: int, y: int): time.sleep(2) return x * yfor 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” 即可收费取得