python decorator,它只允许执行一次给定的函数/方法并缓存结果。数据不仅可以存储在内存中,而且可以存储在磁盘上,并且在应用程序运行之间保持持久性。
call-once的Python项目详细描述
调用一次
这个项目的目的是什么?
python decorator,它只允许执行一次给定的函数/方法并缓存结果。数据不仅可以存储在内存中,还可以存储在磁盘上,并且在应用程序运行之间保持持久性。
如何安装:
pip install call-once
使用方法:
查看测试目录以获取想法。代码与python兼容>;=3.4
简单示例
importCallOncefromCallOnce.EnumsimportArgumentsMode@CallOnce.CallOnce(args_mode=ArgumentsMode.SERIALIZE_AND_HASH)defplus_one(value):print("Function invoked for {}".format(value))returnvalue+1print(plus_one(5))print(plus_one(5))print(plus_one(10))# Function invoked for 5# 6# 6# Function invoked for 10# 11
TTL
的示例fromdatetimeimporttimedeltaimportCallOnce@CallOnce.CallOnce(ttl=timedelta(milliseconds=100))defplus_one(value):print("Function invoked for {}".format(value))returnvalue+1print(plus_one(5))print(plus_one(5))fromtimeimportsleepsleep(0.5)print(plus_one(5))print(plus_one(5))# Function invoked for 5# 6# Function invoked for 5# 6
decorator的论点是什么?
args_模式
- argumentsmode.serialize_和_hash-调用的参数是散列的
- argumentsmode.ignore-忽略参数并兑现第一次调用的结果(默认值)
哈希模式
- python-正在使用标准python哈希函数(默认值)
- hashFunction.md5-md5
ttl
DateTime.TimeDelta类型的对象,该对象定义给定结果应缓存的时间。如果没有比我们永远记住它。 默认为无
待办事项:
- 改进字典模式的测试
- 在硬盘上添加串行化和永久存储