Szukam biblioteki buforującej Python, ale na razie nic nie mogę znaleźć. Potrzebuję prostego dict
interfejsu, w którym mogę ustawić klucze i ich wygaśnięcie oraz odzyskać je w pamięci podręcznej. Coś takiego:
cache.get(myfunction, duration=300)
co da mi element z pamięci podręcznej, jeśli istnieje, lub wywoła funkcję i zapisze ją, jeśli nie ma lub wygasła. Czy ktoś coś takiego wie?
item
w twoim przykładzie.Odpowiedzi:
Spójrz na Beaker:
źródło
Od Pythona 3.2 możesz użyć dekoratora @lru_cache z biblioteki functools. Jest to ostatnio używana pamięć podręczna, więc nie ma czasu wygaśnięcia dla zawartych w niej przedmiotów, ale jako szybki hack jest bardzo przydatna.
źródło
Możesz również rzucić okiem na dekorator Memoize . Prawdopodobnie mógłbyś sprawić, by robił to, co chcesz, bez zbytniej modyfikacji.
źródło
Joblib https://joblib.readthedocs.io obsługuje funkcje buforowania we wzorcu Memoize. Głównie chodzi o buforowanie kosztownych obliczeniowo funkcji.
Możesz także robić wymyślne rzeczy, takie jak dekorator @ memory.cache dla funkcji. Dokumentacja jest tutaj: https://joblib.readthedocs.io/en/latest/generated/joblib.Memory.html
źródło
Nikt jeszcze nie wspomniał o półce. https://docs.python.org/2/library/shelve.html
Nie jest zapisywany w pamięci podręcznej, ale wygląda na znacznie prostszy i może pasować do Twoich potrzeb.
źródło
Myślę, że Python memcached API jest najpopularniejszym narzędziem, ale sam go nie używałem i nie jestem pewien, czy obsługuje funkcje, których potrzebujesz.
źródło
źródło
get
metodę, nie powinna to być podklasa dict, powinien to być obiekt z osadzoną dyktą.Możesz skorzystać z mojego prostego rozwiązania problemu. To naprawdę proste, nic nadzwyczajnego:
W istocie brakuje mu funkcji wygasania, ale można ją łatwo rozszerzyć, określając konkretną regułę w c-torze MemCache.
Mam nadzieję, że kod jest wystarczająco oczywisty, ale jeśli nie, wystarczy wspomnieć, że pamięć podręczna jest przekazywana jako jeden z parametrów c-tor jako funkcja tłumaczenia. Służy z kolei do generowania buforowanych danych wyjściowych dotyczących danych wejściowych.
Mam nadzieję, że to pomoże
źródło
else
w__getitem__
:)else
w__getitem__
? Tam wypełnia dyktando ...Wypróbuj redis, jest to jedno z najczystszych i najłatwiejszych rozwiązań dla aplikacji do udostępniania danych w sposób atomowy lub jeśli masz platformę serwera WWW. Jest bardzo łatwy w konfiguracji, potrzebujesz klienta Python redis http://pypi.python.org/pypi/redis
źródło
Spójrz na gocept.cache na pypi , zarządzaj limitem czasu.
źródło
Ten projekt ma na celu zapewnienie „buforowania dla ludzi” (wydaje się jednak, że jest to dość nieznane)
Kilka informacji ze strony projektu:
Instalacja
pamięć podręczna instalacji pip
Stosowanie:
źródło
Spójrz na bda.cache http://pypi.python.org/pypi/bda.cache - używa ZCA i jest testowany z zope i bfg.
źródło
Keyring to najlepsza biblioteka buforująca Pythona. Możesz użyć
źródło