是否可以定义回调functools.lru_cache
当一个项目被驱逐时?在回调中还应该存在缓存的值。
如果没有,也许有人知道一个支持驱逐和回调的轻量级类似字典的缓存?
我将我使用的解决方案发布出来以供将来参考。我使用了一个名为cachetools的包(https://github.com/tkem/cachetools https://github.com/tkem/cachetools)。您可以简单地安装$ pip install cachetools
.
它也有类似于 Python 3 的装饰器functools.lru_cache
(https://docs.python.org/3/library/functools.html https://docs.python.org/3/library/functools.html).
不同的缓存都源自cachetools.cache.Cache
这称为popitem()
函数来自MutableMapping
驱逐物品时。该函数返回“弹出”项的键和值。
要注入逐出回调,只需从所需的缓存中派生并覆盖popitem()
功能。例如:
class LRUCache2(LRUCache):
def __init__(self, maxsize, missing=None, getsizeof=None, evict=None):
LRUCache.__init__(self, maxsize, missing, getsizeof)
self.__evict = evict
def popitem(self):
key, val = LRUCache.popitem(self)
evict = self.__evict
if evict:
evict(key, val)
return key, val
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)