Использование декоратора LRU Cache, найденного здесь: http://code.activestate.com/recipes/578078-py26-and-py30-backport-of-python-33s-lru-cache/
from lru_cache import lru_cache
class Test:
@lru_cache(maxsize=16)
def cached_method(self, x):
return x + 5
Я могу создать декорированный метод класса с этим, но он создает глобальный кеш, который применяется к экземплярам all класса Test. Тем не менее, я решил создать кеш для каждого экземпляра. Поэтому, если бы я должен был создать три теста, у меня было бы 3 кэша LRU, а не 1 LRU-кеш, что для всех трех экземпляров.
Единственное, что у меня есть, это когда вы вызываете cache_info() для разных методов оформления экземпляров класса, все они возвращают одну и ту же статистику кеша (что крайне маловероятно, если они взаимодействуют с очень разными аргументами ):
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)
Есть ли декоратор или трюк, который позволил бы мне легко заставить этого декоратора создать кэш для каждого экземпляра класса?