ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я автор kids.cache .
Вы должны проверить kids.cache
, он предоставляет декоратор @cache
, который работает на python 2 и python 3. Никаких зависимостей, ~ 100 строк кода. Использовать его очень просто, например, с учетом вашего кода, вы можете использовать его так:
pip install kids.cache
Тогда
from kids.cache import cache
...
class MyClass(object):
...
@cache # <-- That's all you need to do
@property
def name(self):
return 1 + 1 # supposedly expensive calculation
Или вы можете поставить декоратор @cache
после @property
(тот же результат).
Использование кэша в свойстве называется Ленивая оценка , kids.cache
может сделать гораздо больше (он работает с функцией с любыми аргументами, свойствами, любым типом методов и даже классами ...). Для продвинутых пользователей kids.cache
поддерживает cachetools
, который предоставляет модные хранилища кеша для python 2 и python 3 (LRU, LFU, TTL, RR cache).
ВАЖНОЕ ПРИМЕЧАНИЕ : хранилище кэша по умолчанию kids.cache
- это стандартный dict, который не рекомендуется для долго выполняющейся программы с разными запросами, так как это приведет к постоянно растущему хранилищу кэширования. Для этого вы можете подключить другие хранилища кеша, используя, например (@cache(use=cachetools.LRUCache(maxsize=2))
для украшения вашей функции / свойства / класса / метода ...)