[英]Python functools.lru_cache eviction callback or equivalent
當項目被驅逐時,是否可以為functools.lru_cache
定義回調? 在回調中,緩存值也應該存在。
如果沒有,也許有人知道一個輕量級的類似dict的緩存支持驅逐和回調?
我將發布我用於將來參考的解決方案。 我使用了一個名為cachetools的包( https://github.com/tkem/cachetools )。 您只需安裝$ pip install cachetools
。
它還有類似於Python 3 functools.lru_cache
( 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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.