К сожалению, я смог найти только следующие способы:
- Если я хочу использовать несвязанный кеш и у меня есть попадание/промах статистика:
Код: Выделить всё
from cachetools.func import lru_cache @lru_cache(maxsize=None) def foo(a, b, c=None): print("foo") - Если я хочу использовать несвязанный кеш и использовать пользовательскую ключевую функцию:
или воспользуйтесь этим «хаком»:
Код: Выделить всё
from cachetools import cached @cached( cache={}, key=lambda a, b, c=None: "a" if c is None else "b" ) def foo(a, b, c=None): print("foo")Код: Выделить всё
from cachetools import cached, LRUCache @cached( cache=LRUCache(maxsize=1, getsizeof=lambda _: 0), # will always pass the test of maxsize check key=lambda a, b, c=None: "a" if c is None else "b" ) def foo(a, b, c=None): print("foo")
Я знаю, как реализовать это самостоятельно, мне просто интересно, есть ли какой-нибудь встроенный способ в кэш-инструментах/функтулах Python, который поддерживает это?
Подробнее здесь: https://stackoverflow.com/questions/634 ... custom-key