💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
python的缓存库(cacheout) ## 链接 * 项目: https://github.com/dgilland/cacheout * 文档地址: https://cacheout.readthedocs.io * PyPI(下载链接): https://pypi.python.org/pypi/cacheout/ * TravisCI(下载链接): https://travis-ci.org/dgilland/cacheout ## 特性 * 后端使用字典进行缓存 * 使用缓存管理轻松访问多个缓存对象 * 当使用模块级缓存对象,重构运行时的缓存设置 * 最大缓存大小限制 * 默认的缓存时间设置以及缓存项自定义存活时间 * 批量的设置、获取、删除操作 * 线程安全 ## 多种缓存机制的实现 * FIFO(先进先出) * LIFO(后进先出) * LRU (最近最少使用机制) * MRU (最近最多使用机制) * LFU (最小频率使用机制) * RR (随机替换机制) ## 线路图 * 层级缓存(多层级缓存) * 支持缓存事件监听 * 获取缓存对象时的常规表示方法 * 获取缓存对象不存在时的回调处理支持 * 统计缓存 ## 要求 Python >= 3.4 ## 安装 ``` pip install cacheout ``` ## 使用 ```python In [1]: from cacheout import Cache In [2]: cache = Cache() In [5]: cache.set(1, 'foo', ttl=10) In [6]: cache.get(1) Out[6]: 'foo' In [10]: cache.delete(1) Out[10]: 1 ``` ## 缓存计算结果 ![](http://om4h63cja.bkt.clouddn.com/img20181014161237.png) ### 计算斐波那契数列 开启缓存后,速度提高若干个数量级 ```python #!/usr/bin/env python # python3 import time from cacheout import Cache cache = Cache() start = time.time() @cache.memoize() def fib(n): if n == 1 or n ==2 : return 1 else: return fib(n-1) + fib(n-2) # 解除某个结果的缓存 fib.uncached(1) # 清除缓存 cache.clear() cost = time.time() - start print("cost {}s, {}".format(cost, fib(200))) ```