当前位置: 首页 > news >正文

济南物流行业网站建设工具免费可用的网站源码

济南物流行业网站建设工具,免费可用的网站源码,绵阳 网站建设,山东网站制作定制文章目录 cachetools缓存策略缓存操作 TTLCache cachetools是一个Python第三方库,提供了多种缓存算法的实现。 cachetools 使用前需要先安装pip install cachetools,说明文档参见https://cachetools.readthedocs.io/en/latest/。 cachetools提供了五种…

文章目录

    • cachetools
      • 缓存策略
      • 缓存操作
    • TTLCache

cachetools是一个Python第三方库,提供了多种缓存算法的实现。

cachetools

使用前需要先安装pip install cachetools,说明文档参见https://cachetools.readthedocs.io/en/latest/

cachetools提供了五种缓存类型:

  • Cached
  • LRUCache
  • TTLCache
  • LFUCache
  • RRCache

缓存策略

cachetools提供了以下常见的缓存策略(当需要为新的条目腾出空间时,如何移除已有条目):

  • Least Recently Used (LRU): 移除最近最少使用的条目;这是一种常见的缓存策略,适用于大多数场景。
  • Most Recently Used (MRU): 移除最近最常使用的条目;这种策略适用于一些特殊场景,例如当最近访问的数据不太可能再次访问时。
  • Random Replacement (RR): 随机移除一个条目。;这种策略实现简单,但性能相对较差。
  • First-In-First-Out (FIFO): 按照条目添加到缓存的顺序进行移除;这种策略适用于一些特定场景,例如缓存的数据具有固定生命周期。

cachetools中允许自定义缓存策略,只需继承cachetools.Cache类,并实现相应的方法。

from cachetools import Cacheclass SizeLimitedCache(Cache):def __init__(self, maxsize):super().__init__(maxsize=maxsize)def __getitem__(self, key, cache_getitem=Cache.__getitem__):return cache_getitem(self, key)def __setitem__(self, key, value, cache_setitem=Cache.__setitem__):if len(self) >= self.maxsize:self.popitem()  # 删除一个缓存项cache_setitem(self, key, value)# 使用自定义缓存策略
custom_cache = SizeLimitedCache(maxsize=10)
for i in range(20):key = "key-{}".format(i)custom_cache[key] = iprint(custom_cache.items())

缓存操作

创建缓存时,都需指定最大条目数:lru = cachetools.LRUCache(maxsize=100)

  • maxsize参数代表的是缓存中可以存储的最大条目数量

缓存的添加、获取等类似dict操作:

# 添加缓存项
lru["key"] = "value"# 获取缓存项
# value = lru.get("key") # 不存在时,返回None
value = lru.get("key", "default_value")# 删除缓存项
if "key" in lru:del lru["key"]# 更新缓存项
lru["key"] = "new_value"

其他有用函数与属性:

  • clear():清空Cache;
  • popitem():根据策略,移除一项;
  • currsize:获取当前缓存条目数量;

TTLCache

TTLCache可设定过期时间,过期后缓存条目自动失效:

  • expire(self, time=None):移除过期(若time为None在使用当前时间)条目;
  • get时,不会更新过期时间;只有重新设定数据(cache[key]=data),才会更新过期时间;
  • 已满时添加新条目,会先移除过期条目,然后尝试移除第一条。
def expensive_fun(arg1, arg2):key = (arg1, arg2)# 如果缓存中已经有计算结果,直接返回result = cache.get(key)if result is not None:cache[key] = result  # extend expire-timereturn result, 'cached'# 执行计算并将结果保存到缓存中time.sleep(1)  # expensive calcresult = arg1 + arg2cache[key] = resultreturn result, 're-calc'## cache test
cache = TTLCache(maxsize=5, ttl=10)
for i in range(10):print(datetime.now(), expensive_fun(i, 2))print(cache.items())print(cache.items())for i in range(5):time.sleep(3)print(datetime.now(), expensive_fun(1, 2)) print(cache.items())# 等待缓存项已经过期
time.sleep(11)# 再次调用需要重新计算,因为缓存项已经被清除了
print(datetime.now(), expensive_fun(1, 2)) 
http://www.yayakq.cn/news/184370/

相关文章:

  • 旅游类网站建设企业的互联网推广
  • 合肥市门户网站网站设置在哪里找
  • 深圳建网站服务学会网页设计找什么工作
  • 做物流的网站有哪些株洲网站建设优化
  • 用自己的网站做淘客局域网建设网站如何访问
  • 公司网站友情链接怎么做副链线上平面设计培训班
  • 什么网站可以赚钱啊广州企业建站 网络服务
  • 建立网站的公司杭州西北建设有限公司网站
  • 有哪些营销型网站运营培训班有用吗
  • 外贸响应式网站网站如何收录
  • 潍坊高新区建设局网站网站没建好可以备案吗
  • 什么是网站建设中的目录上海建设工程交易中心官网
  • dedecms一键更新网站快速网站开发介绍
  • 可以做外链网站微信小程序怎么注销账号
  • 长沙网站se0推广优化公司经营网站 备案信息
  • vps除了做网站还能做什么做公司网站合同
  • 建站目的山西建筑工程集团有限公司
  • 企业门户网站模板 下载摄影网站的建设的论文
  • 用wordpress编辑文章如何全屏东莞百度seo找谁
  • 欧美网站建设教程手机网站根目录
  • 如何有效的进行网站策划网页前端开发工程师
  • 涟源网站建设wordpress怎么获取数据库
  • 网站定制分享想做一个自己的网站 怎么做
  • 网站案例代码网站开发就业薪酬
  • 佛山行业网站设计软文发布的平台与板块
  • 软件公司招聘网站营销型网站建设培训
  • 最大的搜索网站排名广东宏昌建设有限公司网站
  • 好点的开发网站的公司wordpress只显示代码
  • 接网站开发项目平台做网站起什么题目
  • 网站更换标题什么是公司注册资金