用装饰器缓存某个函数的结果
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))
用装饰器缓存某个函数的结果相关推荐
- python装饰器原理-Python函数装饰器原理与用法详解
本文实例讲述了Python函数装饰器原理与用法.分享给大家供大家参考,具体如下: 装饰器本质上是一个函数,该函数用来处理其他函数,它可以让其他函数在不需要修改代码的前提下增加额外的功能,装饰器的返回值 ...
- 190401装饰器-高阶函数-闭包
一.装饰器 装饰器本质是函数 为其他函数添加附加功能 不修改被修饰函数的源代码 不修改被修饰函数的调用方式 装饰器示例 import timedef timmer(func):def wrapper( ...
- python装饰器实例-Python函数装饰器--实例讲解
一.装饰器定义: 1.装饰器的本质为函数: 2.装饰器是用来完成被修饰函数的附加功能的 所以:装饰器是用来完成被修饰函数附属功能的函数 装饰器的要求: 1.不能修改被修饰函数的源代码: 2.不能更改被 ...
- python装饰器函数-python装饰器1:函数装饰器详解
先混个眼熟 谁可以作为装饰器(可以将谁编写成装饰器): 函数 方法 实现了__call__的可调用类 装饰器可以去装饰谁(谁可以被装饰): 函数 方法 类 基础:函数装饰器的表现方式 假如你已经定义了 ...
- 装饰器 and 闭包函数 未完。。。。。
装饰器是一个返回函数的高阶函数.装饰器=高阶函数+函数嵌套+闭包 装饰器需要遵循的原则:不修改被装饰函数的源代码,不修改被装饰函数的调用方式. 高阶函数 1.函数接收的参数是一个函数名 2.函数的返回 ...
- python高阶函数闭包装饰器_5.初识python装饰器 高阶函数+闭包+函数嵌套=装饰器...
一.什么是装饰器? 实际上装饰器就是个函数,这个函数可以为其他函数提供附加的功能. 装饰器在给其他函数添加功能时,不会修改原函数的源代码,不会修改原函数的调用方式. 高阶函数+函数嵌套+闭包 = 装饰 ...
- python 运行时间 装饰器_python 装饰器统计某个函数的运行时间
import datetime def count_time(func): def int_time(*args, **kwargs): start_time = datetime.datetime. ...
- python装饰器带参数函数二阶导数公式_一文搞定Python装饰器,看完面试不再慌
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是Python专题的第12篇文章,我们来看看Python装饰器. 一段囧事 差不多五年前面试的时候,我就领教过它的重要性.那时候我Pyt ...
- Python如何创建装饰器时保留函数元信息
问题 你写了一个装饰器作用在某个函数上,但是这个函数的重要的元信息比如名字.文档字符串.注解和参数签名都丢失了. 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后, ...
最新文章
- 软件测试培训适合什么人学习?
- redis 生成dump.rdb文件
- 疫情期间在公共场所要全程佩戴口罩,不要抱有侥幸心理
- JSP/Servlet中的汉字编码问题
- Power Bi:零售数据可视化
- 事务演练 mysql
- js webpack 解决跨域问题_详解webpack-dev-server使用http-proxy解决跨域问题
- openbsd下实现双网卡负载均衡
- js中事件处理程序的内存优化
- Java核心技术11 | Java IO
- 基于JavaWeb的物流管理系统的设计与实现
- 从东南亚到中东,为什么社交类产品成为游戏出海的突破口?
- 华为交换机之间静态路由配置实例
- c高级语言程序设计课程设计报告,高级语言程序设计 课程设计报告
- python计算iv值_Python计算IV值的示例讲解
- php图片幻灯片代码,解决phpcms更换javascript的幻灯片代码调用图片问题
- [Poi 2012] bzoj2794 Cloakroom [dp]
- Appium-Press keycode(按键代码)
- 基于阿里云生态构建网聚宝业务监控系统
- vmware 启动虚机黑屏
热门文章
- 基于机智云物联网平台的太阳能热水器控制系统
- Excel通过poi设置折线图样式
- [加载XlUE组件失败,迅雷看看桌面图标已损坏,请重新安装。]问题处理
- 获取Avrix上Computer Vision and Pattern Recognition的论文,进一步进行统计分析。
- go拼接字符串不如php,golang 字符串拼接性能的对比分析
- mysql front 安全设置_MySQL-Front 操作限制 解决办法
- java实现“两数之和”
- 仓库摆放示意图_仓库合理堆放标准,货物入库摆放规范
- Oracle中的PLsql的符号解释大全
- 如何重启MySQL服务,正确重启mysql