首页 > 编程语言 >python dict和ttl支持自动过期缓存

python dict和ttl支持自动过期缓存

时间:2023-10-08 15:33:05浏览次数:29  
标签:ExpiringDict python max cache seconds dict ttl import

python dict和ttl支持自动过期缓存

 

github: https://github.com/mailgun/expiringdict

  安装

pip install expiringdict
pip install expiring-dict
使用:
from expiringdict import ExpiringDict
from datetime import timedelta

# 创建一个带有过期时间的字典,过期时间为5秒
cache = ExpiringDict(max_len=100, max_age_seconds=5)

# 向字典中添加键值对
cache['key1'] = 'value1'
cache['key2'] = 'value2'

# 从字典中获取键值对
print(cache['key1'])  # 输出: value1

# 等待5秒钟
import time
time.sleep(5)

# 尝试获取已过期的键值对
print(cache.get('key1'))  # 输出: None

# 尝试获取未过期的键值对
print(cache.get('key2'))  # 输出: value2

 

 

Create a dictionary with capacity for 100 elements and elements expiring in 10 seconds:

from expiringdict import ExpiringDict
cache = ExpiringDict(max_len=100, max_age_seconds=10)
put and get a value there:

cache["key"] = "value"
cache.get("key")


copy from dict or OrderedDict: from expiringdict import ExpiringDict my_dict=dict() my_dict['test'] = 1 cache = ExpiringDict(max_len=100, max_age_seconds=10, items=my_dict) assert cache['test'] == 1


copy from another ExpiringDict, with or without new length and timeout: from expiringdict import ExpiringDict cache_hour = ExpiringDict(max_len=100, max_age_seconds=3600) cache_hour['test'] = 1 cache_hour_copy = ExpiringDict(max_len=None, max_age_seconds=None, items=cache_hour) cache_minute_copy = ExpiringDict(max_len=None, max_age_seconds=60, items=cache_hour) assert cache_minute_copy['test'] == 1


pickle : import dill from expiringdict import ExpiringDict cache = ExpiringDict(max_len=100, max_age_seconds=10) cache['test'] = 1 pickled_cache = dill.dumps(cache) unpickled_cache = dill.loads(cache) assert unpickled_cache['test'] == 1

 



 

标签:ExpiringDict,python,max,cache,seconds,dict,ttl,import
From: https://www.cnblogs.com/lshan/p/17749197.html

相关文章

  • Python-串口通信2
    安装pipinsatllpyserial 初始化简单初始化示例importserialser=serial.Serial('com1',9600,timeout=1) 所有参数 ser=serial.Serial(port=None,#numberofdevice,numberingstartsat#zero.ifeverythingfails,theuser#can......
  • python命令行传参
    #run.pyimportargparseparser=argparse.ArgumentParser()parser.add_argument('--device',type=str,default='cpu:0',help='usewhichdevice')parser.add_argument('--worker',type=int,default=1,help='numofwor......
  • Python学习 —— 初步认知
    写在前面Python是一种流行的高级编程语言,具有简单易学、代码可读性高、应用广泛等优势。它是一种解释型语言,可以直接在终端或集成开发环境(IDE)中运行,而无需事先编译。Python的安装Python的安装过程非常简单。首先,你可以从Python的官方网站(https://www.python.org)下载安装包。根......
  • python查看占用系统内存
    importosimportpsutilinfo=psutil.virtual_memory()print(u'cpu个数:',psutil.cpu_count())print(u'电脑总内存:%.4fGB'%(info.total/1024/1024/1024))print(u'当前进程的内存使用:%.4fGB'%(psutil.Process(os.getpid()).memory_info().rs......
  • Python入门示例系列20 函数
     函数function函数是组织好的,可重复使用的,用来实现单一或相关联功能的代码段。函数能提高应用的模块性,和代码的重复利用率。Python提供了许多内建函数built-in,比如print()。也可以自己创建函数,叫做用户自定义函数。 函数的定义(define)和调用(call)掌握函数的定义和调用。定义一个函......
  • Python入门示例系列18 条件控制 Conditional Statements
    Python提供了bool类型来表示真(对)或假(错),比如常见的5>3比较算式,这个是正确的,在程序世界里称之为真(对),Python使用True来代表;再比如4>20比较算式,这个是错误的,在程序世界里称之为假(错),Python使用False来代表。True和False是Python中的关键字,当作为Python代码输入时,一......
  • Python入门示例系列19 循环语句
    Python中的循环语句有for和while。 while语句Python中while语句的一般形式:while判断条件condition:执行语句statements同样需要注意冒号和缩进。另外,在Python中没有do..while循环。以下实例使用了while来计算1到100的总和:sum=0counter=1whilecounte......
  • Python入门示例系列17 输入与输出( 格式化输出 )
    Python入门示例系列17输入与输出 读取键盘输入(input)Python提供了input()内置函数从标准输入(键盘)读入一行文本,默认的标准输入是键盘。返回结果是字符串。>>>astr=input("请输入:");##input('提示的内容')请输入:123>>>print(astr)123 如果从键盘输入两个数字,并求这......
  • Python入门示例系列16 集合
    Python入门示例系列16集合 集合 集合(set)是一个无序的不重复元素序列。可以使用大括号{}或者set()函数创建集合,注意:创建一个空集合必须用set()而不是{},因为{}是用来创建一个空字典。集合是由不同元素组成,所以即便里面的值重复了,也会自动去重。示例:>>>s=set()#创......
  • Python入门示例系列14 元组
    Python入门示例系列14元组 Python的元组与列表类似,不同之处在于元组的元素不能修改。元组使用小括号(),列表使用方括号[]。元组创建只需要在括号中添加元素,并使用逗号隔开即可。示例:>>>t4=(1,2,3,4)#四个整数的元组>>>t4(1,2,3,4)>>>t1=()#空元祖>>>t1()>>......