Korzystanie z dekorator LRU cache znaleźć tutaj: http://code.activestate.com/recipes/578078-py26-and-py30-backport-of-python-33s-lru-cache/Python LRU Cache Dekorator na wystąpienie
from lru_cache import lru_cache
class Test:
@lru_cache(maxsize=16)
def cached_method(self, x):
return x + 5
mogę utworzyć urządzone metody klasy z tym jednak kończy się tworzenie globalnej pamięci podręcznej, które odnoszą się do wszystkich przypadkach klasy testowej. Jednak moim zamiarem było utworzenie pamięci podręcznej dla poszczególnych instancji. Gdybym miał utworzyć instancję 3 testów, miałbym 3 pamięci podręczne LRU zamiast 1 pamięci podręcznej LRU dla wszystkich 3 instancji.
Jedyne wskazanie, że tak się dzieje, to wywołanie metody cache_info() w różnych metodach dekorowanych instancjami klas, wszystkie zwracają te same statystyki pamięci podręcznej (co jest bardzo mało prawdopodobne, ponieważ są one przedmiotem interakcji z bardzo różnymi arguments):
CacheInfo(hits=8379, misses=759, maxsize=128, currsize=128)
CacheInfo(hits=8379, misses=759, maxsize=128, currsize=128)
CacheInfo(hits=8379, misses=759, maxsize=128, currsize=128)
Czy istnieje dekorator lub trik, który pozwoli mi łatwo spowodować ten dekorator do tworzenia pamięci podręcznej dla każdej instancji klasy?
Pamiętaj, że dekoratorem jest właśnie cukier składniowy dla metody def: pass; method = dekoruj (metoda) '. Więc możesz to przetłumaczyć mechanicznie, aby stworzyć dekorowaną metodę w swoim '__init__'. –
Czy jesteś pewien, że wiesz, do czego służy "metoda klasy"? Ponieważ myślę, że szukasz normalnej metody. Jeśli metoda klasy jest specyficzna dla instancji, jest ona z definicji normalną metodą instancji. Albo dlaczego dokładnie potrzebujesz metody klasowej? A może chcesz mieć pamięć podręczną "na instancję"? – Mayou36