Шаблон проектирования, обычно используемый для этого, не через словарь, а через декоратор функции или метода. Управление кэш-памятью осуществляется за кулисами.
В этом ответе используется декоратор ttl_cache
в cachetools==3.1.0
с Python 3.7. Это работает так же, как functools.lru_cache
, но со временем жизни . Что касается логики реализации, рассмотрим исходный код .
import cachetools.func
@cachetools.func.ttl_cache(maxsize=128, ttl=10 * 60)
def example_function(key):
return get_expensively_computed_value(key)
class ExampleClass:
EXP = 2
@classmethod
@cachetools.func.ttl_cache()
def example_classmethod(cls, i):
return i**cls.EXP
@staticmethod
@cachetools.func.ttl_cache()
def example_staticmethod(i):
return i**3
Если, однако, вы настаиваете на использовании словаря, cachetools
также имеет TTLCache
.
import cachetools
ttl_cache = cachetools.TTLCache(maxsize=128, ttl=10 * 60)