一部のクラスには、計算コストの高いプロパティがいくつかあります。これらのプロパティは、可変/基になる属性が変更されない限り変更されません。高価な資産を保管し、変更が加えられた場合にのみ再計算する方法はありますか?
質問する
70 次
1 に答える
1
プロパティメソッドの他の変数をテストし、それらをキャッシュキーの一部として使用できます。
class CachedProperties(object):
@property
def expensiveValue(self):
cacheKey = (self.var1, self.var2)
if cacheKey in self._expensiveValueCache:
return self._expensiveValueCache[cacheKey]
# No cached value available, calculate it now
res = self._expensiveValueCache[cacheKey] = calculation(self.var1, self.var2)
return res
ここで、実際に高価な値が必要になり、 var1またはvar2が変更されるまで、計算を延期します。
于 2012-07-03T12:23:40.533 に答える