ここにあるLRUキャッシュデコレータの使用: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
これで装飾されたクラスメソッドを作成できますが、最終的にはクラスTestのすべてのインスタンスに適用されるグローバルキャッシュが作成されます。ただし、私の意図は、インスタンスごとのキャッシュを作成することでした。したがって、3つのテストをインスタンス化する場合、3つのインスタンスすべてに対して1つのLRUキャッシュではなく、3つの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)
このデコレータに各クラスインスタンスのキャッシュを簡単に作成させるデコレータまたはトリックはありますか?