zoukankan      html  css  js  c++  java
  • 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,即只调用了一次,也就达到了我们的目的。

  • 相关阅读:
    随笔
    打破生活的套牢
    健忘是种美德
    【转贴】怎样冒充古典高手!
    php数组中删除元素
    JS 总结
    ubuntu apache rewrite
    JS 预览超级大图
    UBUNTU 安装SVN
    Yahoo14条前端优化规则
  • 原文地址:https://www.cnblogs.com/wxshi/p/7712154.html
Copyright © 2011-2022 走看看