ttlmomeized-一个带有ttl(生存时间)支持的备忘录装饰器
ttl_memoized的Python项目详细描述
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从参数构建密钥。