数据挖掘的过程中,数据进行处理是一重要的环节,我们往往会将其封装成一个方法,而有的时候这一个方法可能会被反复调用,每一次都对数据进行处理这将是一个很耗时耗资源的操纵,那么有没有办法将计算后的结果 缓存 起来达到 调用一次,处处运行 的效果,经过一番研究在 lazy_object_proxy/utils.py 中发现了一段代码,详见lazy_object_proxy 。
1
2
3
4
5
6
7
8
9
|
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 |
那么之后该怎么使用呢?下面给出了一个简单的例子:
1
2
3
4
5
6
7
8
|
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 |
下面是结果
1
2
3
4
5
6
|
>> t = Test(1000) >>t.display some complicated compute here 1000 >>t.display 1000 |
从上面结果可以看出,只打印出了一次 some complicated compute here ,即只调用了一次,也就达到了我们的目的。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:http://www.linuxidc.com/Linux/2017-12/149563.htm