Я ищу библиотеку кеширования Python, но пока ничего не могу найти. Мне нужен простой dict
интерфейс, в котором я могу установить ключи и срок их действия и вернуть их в кеш. Что-то вроде:
cache.get(myfunction, duration=300)
который предоставит мне элемент из кеша, если он существует, или вызовет функцию и сохранит ее, если ее нет или срок ее действия истек. Кто-нибудь знает что-то подобное?
item
вашего примера.Ответы:
Взгляните на стакан:
источник
Начиная с Python 3.2, вы можете использовать декоратор @lru_cache из библиотеки functools . Это последний недавно использованный кеш, поэтому для элементов в нем нет срока годности, но в качестве быстрого взлома он очень полезен.
источник
Вы также можете взглянуть на декоратор Memoize . Вероятно, вы могли бы заставить его делать то, что вы хотите, без особых изменений.
источник
Joblib https://joblib.readthedocs.io поддерживает функции кэширования в шаблоне Memoize. В основном идея состоит в том, чтобы кэшировать дорогостоящие в вычислительном отношении функции.
Вы также можете делать необычные вещи, например использовать декоратор @ memory.cache для функций. Документация находится здесь: https://joblib.readthedocs.io/en/latest/generated/joblib.Memory.html
источник
Еще никто не упомянул полку. https://docs.python.org/2/library/shelve.html
Это не memcached, но выглядит намного проще и может соответствовать вашим потребностям.
источник
Я думаю, что python memcached API является наиболее распространенным инструментом, но я сам не использовал его и не уверен, поддерживает ли он нужные вам функции.
источник
источник
get
метод, это не должен быть подкласс dict, это должен быть объект со встроенным dict.Вы можете воспользоваться моим простым решением проблемы. Это действительно просто, ничего особенного:
Ему действительно не хватает функциональности по истечении срока действия, но вы можете легко расширить его, указав конкретное правило в MemCache c-tor.
Код Hope достаточно понятен, но если нет, просто упомяну, что в этот кеш передается функция перевода в качестве одного из параметров c-tor. Он, в свою очередь, используется для создания кэшированного вывода относительно ввода.
Надеюсь, поможет
источник
else
в__getitem__
:)else
в__getitem__
? Вот где он заполняетПопробуйте redis, это одно из самых чистых и простых решений для приложений для атомарного обмена данными или если у вас есть платформа веб-сервера. Его очень легко настроить, вам понадобится клиент python redis http://pypi.python.org/pypi/redis
источник
Посмотрите gocept.cache на pypi, управляйте таймаутом.
источник
Этот проект направлен на обеспечение "Кэширования для людей" (хотя, похоже, это довольно неизвестно)
Некоторая информация со страницы проекта:
Монтаж
кеш установки pip
Использование:
источник
Посмотрите на bda.cache http://pypi.python.org/pypi/bda.cache - использует ZCA и протестирован с zope и bfg.
источник
keyring - лучшая библиотека кеширования Python. Ты можешь использовать
источник