Python方法的延迟加载的示例代码
数据挖掘的过程中,数据进行处理是一重要的环节,我们往往会将其封装成一个方法,而有的时候这一个方法可能会被反复调用,每一次都对数据进行处理这将是一个很耗时耗资源的操纵,那么有没有办法将计算后的结果 缓存 起来达到 调用一次,处处运行 的效果,经过一番研究在 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.display some complicated compute here 1000 >>t.display 1000
从上面结果可以看出,只打印出了一次 some complicated compute here ,即只调用了一次,也就达到了我们的目的。
相关推荐
cnflat0 2020-04-23
无情的你无情的雨 2020-03-08
cuterabbitbaby 2020-02-23
xiyang 2020-01-06
zyljjf 2014-06-16
那年夏天 2019-11-16
cyjsky 2016-11-15
ParadiserD 2012-03-13
BruceWayne 2014-06-03
AKbiubiu 2013-02-25
纯粹的果子 2012-12-08
tianhennan 2012-08-13
bigcactus 2012-06-14
New丶Elements 2019-07-01
kingwbs 2019-07-01
RogerCoderLife 2019-07-01
sunyao000 2019-07-01
刘小文 2016-11-16