有没有Python缓存库?
我在找一个Python的缓存库,但到现在还没找到合适的。我需要一个简单的像dict
那样的接口,可以设置键值和它们的过期时间,然后再把它们从缓存中取回来。大概是这样的:
cache.get(myfunction, duration=300)
如果缓存中有这个项目,就直接从缓存里拿;如果没有或者过期了,就调用一个函数来获取它,并把结果存起来。有没有人知道类似这样的东西?
15 个回答
30
你也可以看看这个 Memoize 装饰器。你可能只需要稍微改动一下,就能让它实现你想要的功能。
92
从Python 3.2开始,你可以使用functools库里的一个叫做@lru_cache的装饰器。这个装饰器是一种叫做最近最少使用(LRU)的缓存方式,也就是说里面的东西不会过期,但作为一种快速的解决办法,它非常有用。
from functools import lru_cache
@lru_cache(maxsize=256)
def f(x):
return x*x
for x in range(20):
print f(x)
for x in range(20):
print f(x)
55
来看看 Beaker: