ttlmomeized-一个带有ttl(生存时间)支持的备忘录装饰器

ttl_memoized的Python项目详细描述


PyPI versionBuild StatusSupported Python Versions

TTL Memoized-支持TTL(生存时间)的Memoized装饰器。

memoized的想法很棒,因为有些资源很昂贵,所以 你想缓存它们

但是,在 或者我什么也没找到。

所以我实现了这个 ttl_memoized填写 这里的空隙

另外,这个库是线程安全的,使用 threading.local 对象来存储变量

安装:

使用pip应该很简单:

pip install ttl_memoized

使用量

用法很简单,最好的解释方法是通过我的测试 案例:

def test_basic():

  @memoized(ttl=0.5)
  def a(name):
    return datetime.datetime.now()

  @memoized(ttl=0.5)
  def b(name, *args, **kwargs):
    return datetime.datetime.now()

  a1 = a(1)
  b1 = b(1, 2, 3, what='ever', you='want', to='be')

  for i in range(100):
    assert a1 == a(1)

  for i in range(100):
    assert b1 is b(1, 2, 3, what='ever', you='want', to='be')

  a2 = a(2)
  assert a2 != a1

  # let the cache expired...
  time.sleep(0.51)

  assert a(1) != a1
  assert b1 != b(1, 2, 3, what='ever', you='want', to='be')

中央凹

函数的参数必须可序列化为 jsonlibs,作为lib 使用json从参数构建密钥。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
spring JSTL:绝对uri:http://java.sun.com/jsp/jstl/core无法在两个站点中解析。xml或与此应用程序一起部署的jar文件   java在Junit测试中找不到失败的符号   java为什么在没有同步块的情况下调用wait()、notify()或notifyAll()不是编译器错误?   使用onDraw()绘制多个位图的java Android在曲面视图上放大缩小画布   在java中比较args值和字符串   java更改文件中的特定字节   java TransformerFactory破坏<html>标记中的<input>和<br>标记   azure appinsights java自定义指标不起作用   Java泛型在实现接口的类上指定上界,接口本身指定上界   java AS400 prog和动态类路径   java应用程序截图时收到空消息   java无法从片段中获取上下文   找不到java配置单元UDF类   linux是一个提供java的接口。lang.NoClassDefFoundError   java如何使用面向对象建模创建此数据库