python 装饰器参数_python_如何修改装饰器中参数?
#!/usr/bin/python3
import time
import logging
from random import randint
def run_time(timeout):
"""
定义检查函数运行时间,并打印对应函数运行时间超出设定时间日志,并支持更改timeout
"""
# python2
# timeout = [timeout]
# 真正包裹函数
def out_wrapper(func):
def wrapper(*args, **kwargs):
start_time = time.time()
result = func(*args, **kwargs)
used_time = time.time() - start_time
# 对于超出timeout的函数进行日志打印
if used_time > timeout:
msg = ‘%s: %s > %s‘ % (func.__name__, used_time, timeout)
logging.warn(msg)
# python2
# if used_time > timeout[0]:
# msg = ‘%s: %s > %s‘ % (func.__name__, used_time, timeout[0])
# logging.warn(msg)
# return result
# 设置timeout参数值
def set_timeout(value):
nonlocal timeout
timeout = value
wrapper.set_timeout = set_timeout
# python2
# def set_timeout(value):
# timeout[0] = value
# wrapper.set_timeout = set_timeout
return wrapper
return out_wrapper
@run_time(1.5)
def func():
# 随机有50%的几率程序沉睡1秒
while randint(0, 1):
time.sleep(1)
print(‘func_run‘)
if __name__ == "__main__":
for _ in range(10):
func()
print(‘_‘*50)
# 更改run_time装饰器中timeout参数
func.set_timeout(2)
for _ in range(10):
func()
python 装饰器参数_python_如何修改装饰器中参数?相关推荐
- python 函数参数前面两个星号_Python中参数前面一个星号两个星号(*参数,**参数)起什么作用呢?...
摘要: 下文讲述Python中参数前面一个星号两个星号的功能分享,如下所示: 在Python语言中,我们经常看见参数前面 加上一个星号或两个星号 那么这些写法到底起什么作用呢? 下文将一一道来,如下所 ...
- Jdk8内存参数解析与修改(新的参数)
JDK内存 jdk内存实际是jvm内存,jvm有一个运行时数据区,其实就是对这一部分的大小分配. 运行时数据区通常包括这几个部分:程序计数器(Program Counter Register).Jav ...
- java 什么是参数_java中参数是什么?
java中参数是什么?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! java中参数是什么? 参数分为实参和形参.方法名 ...
- python高阶函数闭包装饰器_Python_基础_(装饰器,*args,**kwargs,高阶函数,函数闭包,函数嵌套)...
一,装饰器 装饰器:本质就是函数,功能是为其它的函数动态添加附加的功能 原则:对修改关闭对扩展开放 1.不修改被修饰函数的源代码 2.不修改被修改函数的调用方式 装饰器实现的知识储备:高阶函数,函数嵌 ...
- Python基础知识——函数的基本使用、函数的参数、名称空间与作用域、函数对象与闭包、 装饰器、迭代器、生成器与yield、函数递归、面向过程与函数式(map、reduce、filter)
文章目录 1 函数的基本使用 一 引入 二 定义函数 三 调用函数与函数返回值 2 函数的参数 一 形参与实参介绍 二 形参与实参的具体使用 2.1 位置参数 2.2 关键字参数 2.3 默认参数 2 ...
- Python(IT峰)笔记12-装饰器概念,装饰器的原型,装饰器的嵌套,装饰带有参数的函数,装饰器的嵌套,装饰带有多参数的函数,带有参数的装饰器,用类方法装饰函数,用韩式装饰器装饰类,用类装饰器装饰类
1.装饰器decorator概念 在不改变原有函数代码,且保持原函数调用方法的基础上,给原函数增加新的功能(给类增加属性或方法) 用一个函数或类去装饰一个旧函数(或类)造出一个新函数(或新类) 在原有 ...
- python的装饰器迭代器与生成器_python3 装饰器、列表生成器、迭代器、内置方法详解等(第四周)...
前言: 为什么要学习python3? 原因: 1.学习一门语言能力 2.通过该语言能力完成测试自动化以及独立完成自测框架知识 那么我要做什么呢? 1.每天花十个小时完成python3的学习 要在什么地 ...
- python中的装饰器(以及多个装饰器详细执行过程)
装饰器 1.如果要增强一个函数的功能,但又不希望更改原函数中的代码,这种在代码运行期间动态增加功能的机制被称为装饰器 [Decorator] 2. 本质:实际上就是一个闭包,只不过被装饰的函数需要 ...
- python 装饰器有哪些_python之装饰器
一,什么是装饰器? 装饰器本质上就是一个python函数,他可以让其他函数在不需要做任何代码变动的前提下,增加额外的功能,装饰器的返回值也是一个函数对象. 装饰器的应用场景:比如插入日志,性能测试,事 ...
最新文章
- 小型企业组织建设第二阶段
- sqlalchemy mysql_SQLAlchemy简明教程
- Oracle 9i学习日志(9)--数据字典与动态性能视图及练习
- 再见了微服务!全面拥抱 DDD 思想真正的价值!
- C语言 字符串转换成int、long和double型
- if the parser found inconsistent certificates on the files in the .apk.104
- python调用C函数库
- 云计算学习路线和经典资料推荐
- Leetcode: Validate Binary Search Tree
- oracle数据库实验讲义-读书笔记(一)
- Java IO: 文件
- PostgreSQL学习手册(数据库维护) 转
- 华为cor—al10_cor al10是华为什么型号 cor al10是华为啥型号
- win7系统任务管理器如何强制关闭程序
- 漫步数学分析八——集合边界
- UnityShader23:顶点动画
- 光环PMP 二模错题知识点
- 洛谷P5706 【深基2.例8】再分肥宅水__C++描述
- 一文带你全方位了解网卡
- 针对VC++ 上各种方法获取时间差,CSpanTime等
热门文章
- 李迅雷+但斌+趋势的力量+对话PPT
- R绘制QQ图并解读QQ图
- R包库安装及数据加载:一次安装多个R包、一次加载多个R包
- 对于图像分类任务,相对于全连接的DNN,CNN模型的主要优点有哪些?
- 绘制测试集、训练集的每一个病人或者样本的raidomics signiture图(绘制raidomics signature图),以及ROC曲线图
- 开源自动机器学习(AutoML)框架盘点
- 生物信息学常见数据格式 • fasta • fastq • gff/gtf
- tf.keras.losses.SparseCategoricalCrossentropy() 稀疏交叉熵 损失函数 示例
- html 跳转或打开新网页
- LeetCode 445. Add Two Numbers II--面试算法题--C++,Python解法