Статистика кэш-инструментов Python и использование пользовательского ключаPython

Программы на Python
Anonymous
Статистика кэш-инструментов Python и использование пользовательского ключа

Сообщение Anonymous »

Я ищу способ использовать встроенную библиотеку кэширования Python, а также поддерживать статистику попаданий/промахов, использовать настраиваемую функцию ключа и, если возможно, поддерживать неограниченный кеш?Я ищу способ использовать встроенную библиотеку кэширования Python. p>
К сожалению, я смог найти только следующие способы:
  • Если я хочу использовать несвязанный кеш и у меня есть попадание/промах статистика:

    Код: Выделить всё

    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

Вернуться в «Python»