import time
import hashlib
import picklecache = {}def is_obsolete(entry, duration):   # 判断缓存是否过期,返回True则过期d = time.time() - entry['time']return d > durationdef compute_key(function, args, kwargs):    # 将传入的参数序列化key = pickle.dumps((function.__name__, args, kwargs))return hashlib.sha1(key).hexdigest()def memoize(duration=10):   # 装饰器中缓存时间默认为10秒def _memorize(function):    # 第二层传函数def __memorize(*args, **kwargs):    # 第三层传入非固定参数key = compute_key(function, args, kwargs)if key in cache and not is_obsolete(cache[key], duration):print('we got a winner', end='  ')return cache[key]['value']  # 如果缓存中有,就直接返回缓存过的结果result = function(*args, **kwargs)cache[key] = {'value': result, 'time': time.time()}print(cache)return resultreturn __memorizereturn _memorize@memoize(100)
def complex(a,b):time.sleep(1)return a+b
while True:a=int(input('请输入a: '))b=int(input('请输入b: '))print(complex(a, b))

用装饰器缓存某个函数的结果相关推荐

  1. python装饰器原理-Python函数装饰器原理与用法详解

    本文实例讲述了Python函数装饰器原理与用法.分享给大家供大家参考,具体如下: 装饰器本质上是一个函数,该函数用来处理其他函数,它可以让其他函数在不需要修改代码的前提下增加额外的功能,装饰器的返回值 ...

  2. 190401装饰器-高阶函数-闭包

    一.装饰器 装饰器本质是函数 为其他函数添加附加功能 不修改被修饰函数的源代码 不修改被修饰函数的调用方式 装饰器示例 import timedef timmer(func):def wrapper( ...

  3. python装饰器实例-Python函数装饰器--实例讲解

    一.装饰器定义: 1.装饰器的本质为函数: 2.装饰器是用来完成被修饰函数的附加功能的 所以:装饰器是用来完成被修饰函数附属功能的函数 装饰器的要求: 1.不能修改被修饰函数的源代码: 2.不能更改被 ...

  4. python装饰器函数-python装饰器1:函数装饰器详解

    先混个眼熟 谁可以作为装饰器(可以将谁编写成装饰器): 函数 方法 实现了__call__的可调用类 装饰器可以去装饰谁(谁可以被装饰): 函数 方法 类 基础:函数装饰器的表现方式 假如你已经定义了 ...

  5. 装饰器 and 闭包函数 未完。。。。。

    装饰器是一个返回函数的高阶函数.装饰器=高阶函数+函数嵌套+闭包 装饰器需要遵循的原则:不修改被装饰函数的源代码,不修改被装饰函数的调用方式. 高阶函数 1.函数接收的参数是一个函数名 2.函数的返回 ...

  6. python高阶函数闭包装饰器_5.初识python装饰器 高阶函数+闭包+函数嵌套=装饰器...

    一.什么是装饰器? 实际上装饰器就是个函数,这个函数可以为其他函数提供附加的功能. 装饰器在给其他函数添加功能时,不会修改原函数的源代码,不会修改原函数的调用方式. 高阶函数+函数嵌套+闭包 = 装饰 ...

  7. python 运行时间 装饰器_python 装饰器统计某个函数的运行时间

    import datetime def count_time(func): def int_time(*args, **kwargs): start_time = datetime.datetime. ...

  8. python装饰器带参数函数二阶导数公式_一文搞定Python装饰器,看完面试不再慌

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是Python专题的第12篇文章,我们来看看Python装饰器. 一段囧事 差不多五年前面试的时候,我就领教过它的重要性.那时候我Pyt ...

  9. Python如何创建装饰器时保留函数元信息

    问题 你写了一个装饰器作用在某个函数上,但是这个函数的重要的元信息比如名字.文档字符串.注解和参数签名都丢失了. 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后, ...

最新文章

  1. 软件测试培训适合什么人学习?
  2. redis 生成dump.rdb文件
  3. 疫情期间在公共场所要全程佩戴口罩,不要抱有侥幸心理
  4. JSP/Servlet中的汉字编码问题
  5. Power Bi:零售数据可视化
  6. 事务演练 mysql
  7. js webpack 解决跨域问题_详解webpack-dev-server使用http-proxy解决跨域问题
  8. openbsd下实现双网卡负载均衡
  9. js中事件处理程序的内存优化
  10. Java核心技术11 | Java IO
  11. 基于JavaWeb的物流管理系统的设计与实现
  12. 从东南亚到中东,为什么社交类产品成为游戏出海的突破口?
  13. 华为交换机之间静态路由配置实例
  14. c高级语言程序设计课程设计报告,高级语言程序设计 课程设计报告
  15. python计算iv值_Python计算IV值的示例讲解
  16. php图片幻灯片代码,解决phpcms更换javascript的幻灯片代码调用图片问题
  17. [Poi 2012] bzoj2794 Cloakroom [dp]
  18. Appium-Press keycode(按键代码)
  19. 基于阿里云生态构建网聚宝业务监控系统
  20. vmware 启动虚机黑屏

热门文章

  1. 基于机智云物联网平台的太阳能热水器控制系统
  2. Excel通过poi设置折线图样式
  3. [加载XlUE组件失败,迅雷看看桌面图标已损坏,请重新安装。]问题处理
  4. 获取Avrix上Computer Vision and Pattern Recognition的论文,进一步进行统计分析。
  5. go拼接字符串不如php,golang 字符串拼接性能的对比分析
  6. mysql front 安全设置_MySQL-Front 操作限制 解决办法
  7. java实现“两数之和”
  8. 仓库摆放示意图_仓库合理堆放标准,货物入库摆放规范
  9. Oracle中的PLsql的符号解释大全
  10. 如何重启MySQL服务,正确重启mysql