數據挖掘的過程中,數據進行處理是一重要的環節,我們往往會將其封裝成一個方法,而有的時候這一個方法可能會被反復調用,每一次都對數據進行處理這將是一個很耗時耗資源的操縱,那么有沒有辦法將計算后的結果 緩存 起來達到 調用一次,處處運行 的效果,經過一番研究在 lazy_object_proxy/utils.py 中發現了一段代碼,詳見lazy_object_proxy 。
class cached_property(object): def__init__(self, func): self.func = func def__get__(self, obj, cls): if obj is None: return self value = obj.__dict__[self.func.__name__] = self.func(obj) return value
那么之后該怎么使用呢?下面給出了一個簡單的例子:
class Test(object): def__init__(self,value): self.value = value;@cached_property def display(self): #create expensive object print "some complicated compute here" return self.value
下面是結果
>> t = Test(1000)>>t.displaysome complicated compute here1000>>t.display1000
從上面結果可以看出,只打印出了一次 some complicated compute here ,即只調用了一次,也就達到了我們的目的。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林站長站。
新聞熱點
疑難解答