Python方法的延遲加載的示例代碼
數(shù)據(jù)挖掘的過程中,數(shù)據(jù)進行處理是一重要的環(huán)節(jié),我們往往會將其封裝成一個方法,而有的時候這一個方法可能會被反復(fù)調(diào)用,每一次都對數(shù)據(jù)進行處理這將是一個很耗時耗資源的操縱,那么有沒有辦法將計算后的結(jié)果 緩存 起來達到 調(diào)用一次,處處運行 的效果,經(jīng)過一番研究在 lazy_object_proxy/utils.py 中發(fā)現(xiàn)了一段代碼,詳見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
下面是結(jié)果
>> t = Test(1000) >>t.display some complicated compute here 1000 >>t.display 1000
從上面結(jié)果可以看出,只打印出了一次 some complicated compute here ,即只調(diào)用了一次,也就達到了我們的目的。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
解決django migrate報錯ORA-02000: missing ALWAYS keyword
這篇文章主要介紹了解決django migrate報錯ORA-02000: missing ALWAYS keyword,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07python利用蒙版摳圖(使用PIL.Image和cv2)輸出透明背景圖
這篇文章主要介紹了python利用蒙版摳圖(使用PIL.Image和cv2)輸出透明背景圖,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-08-08詳解Python3 中hasattr()、getattr()、setattr()、delattr()函數(shù)及示例代碼數(shù)
本文通過示例代碼給大家詳細介紹了Python3 中hasattr()、getattr()、setattr()、delattr()函數(shù),非常不錯,具有參考借鑒價值,需要的朋友參考下吧2018-04-04Python字符串str和json格式相互轉(zhuǎn)換
這篇文章主要介紹了Python字符串str和json格式相互轉(zhuǎn)換,str轉(zhuǎn)換為json格式,前提一定需要保證這個str的格式和json是一致的。下文小編向大家介紹更多相關(guān)內(nèi)容,需要的朋友可以參考一下2022-03-03解決Pycharm后臺indexing導(dǎo)致不能run的問題
今天小編就為大家分享一篇解決Pycharm后臺indexing導(dǎo)致不能run的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-06-06