首页 > 编程 > Python > 正文

Python方法的延迟加载的示例代码

2019-11-25 15:31:32
字体:
来源:转载
供稿:网友

数据挖掘的过程中,数据进行处理是一重要的环节,我们往往会将其封装成一个方法,而有的时候这一个方法可能会被反复调用,每一次都对数据进行处理这将是一个很耗时耗资源的操纵,那么有没有办法将计算后的结果 缓存 起来达到 调用一次,处处运行 的效果,经过一番研究在 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 ,即只调用了一次,也就达到了我们的目的。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表