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

yipeiwu_com6年前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 ,即只调用了一次,也就达到了我们的目的。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

详解Python在使用JSON时需要注意的编码问题

详解Python在使用JSON时需要注意的编码问题

写这篇文章的缘由是我使用 reqeusts 库请求接口的时候, 直接使用请求参数里的 json 字段发送数据, 但是服务器无法识别我发送的数据, 排查了好久才知道 requests 内部...

Python批量按比例缩小图片脚本分享

图片太大了,上百张图用photoshop改太慢,就想到用python写个简单的批处理。功能简单就是把原图按比例缩小 复制代码 代码如下: # -*- coding: cp936 -*-&...

python同时给两个收件人发送邮件的方法

本文实例讲述了python同时给两个收件人发送邮件的方法。分享给大家供大家参考。具体分析如下: 该范例通过python内置的smtplib包发送邮件 import smtplib i...

Python3 批量扫描端口的例子

用法 本脚本用于批量扫描端口 1.在同目录下创建输入文件,属性inputFile为输入文件名 2.属性th为线程数 3.属性port为探测的目标端口 4.属性arg为默认的命令 不推荐...

浅谈Python程序与C++程序的联合使用

作为Python程序员,应该能够正视Python的优点与缺点。众所周之,Python的运行速度是很慢的,特别是大数据量的运算时,Python会慢得让人难以忍受。对于这种情况,“专业”的解...