#!/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_如何修改装饰器中参数?相关推荐

  1. python 函数参数前面两个星号_Python中参数前面一个星号两个星号(*参数,**参数)起什么作用呢?...

    摘要: 下文讲述Python中参数前面一个星号两个星号的功能分享,如下所示: 在Python语言中,我们经常看见参数前面 加上一个星号或两个星号 那么这些写法到底起什么作用呢? 下文将一一道来,如下所 ...

  2. Jdk8内存参数解析与修改(新的参数)

    JDK内存 jdk内存实际是jvm内存,jvm有一个运行时数据区,其实就是对这一部分的大小分配. 运行时数据区通常包括这几个部分:程序计数器(Program Counter Register).Jav ...

  3. java 什么是参数_java中参数是什么?

    java中参数是什么?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! java中参数是什么? 参数分为实参和形参.方法名 ...

  4. python高阶函数闭包装饰器_Python_基础_(装饰器,*args,**kwargs,高阶函数,函数闭包,函数嵌套)...

    一,装饰器 装饰器:本质就是函数,功能是为其它的函数动态添加附加的功能 原则:对修改关闭对扩展开放 1.不修改被修饰函数的源代码 2.不修改被修改函数的调用方式 装饰器实现的知识储备:高阶函数,函数嵌 ...

  5. Python基础知识——函数的基本使用、函数的参数、名称空间与作用域、函数对象与闭包、 装饰器、迭代器、生成器与yield、函数递归、面向过程与函数式(map、reduce、filter)

    文章目录 1 函数的基本使用 一 引入 二 定义函数 三 调用函数与函数返回值 2 函数的参数 一 形参与实参介绍 二 形参与实参的具体使用 2.1 位置参数 2.2 关键字参数 2.3 默认参数 2 ...

  6. Python(IT峰)笔记12-装饰器概念,装饰器的原型,装饰器的嵌套,装饰带有参数的函数,装饰器的嵌套,装饰带有多参数的函数,带有参数的装饰器,用类方法装饰函数,用韩式装饰器装饰类,用类装饰器装饰类

    1.装饰器decorator概念 在不改变原有函数代码,且保持原函数调用方法的基础上,给原函数增加新的功能(给类增加属性或方法) 用一个函数或类去装饰一个旧函数(或类)造出一个新函数(或新类) 在原有 ...

  7. python的装饰器迭代器与生成器_python3 装饰器、列表生成器、迭代器、内置方法详解等(第四周)...

    前言: 为什么要学习python3? 原因: 1.学习一门语言能力 2.通过该语言能力完成测试自动化以及独立完成自测框架知识 那么我要做什么呢? 1.每天花十个小时完成python3的学习 要在什么地 ...

  8. python中的装饰器(以及多个装饰器详细执行过程)

    装饰器 1.如果要增强一个函数的功能,但又不希望更改原函数中的代码,这种在代码运行期间动态增加功能的机制被称为装饰器   [Decorator] 2. 本质:实际上就是一个闭包,只不过被装饰的函数需要 ...

  9. python 装饰器有哪些_python之装饰器

    一,什么是装饰器? 装饰器本质上就是一个python函数,他可以让其他函数在不需要做任何代码变动的前提下,增加额外的功能,装饰器的返回值也是一个函数对象. 装饰器的应用场景:比如插入日志,性能测试,事 ...

最新文章

  1. 小型企业组织建设第二阶段
  2. sqlalchemy mysql_SQLAlchemy简明教程
  3. Oracle 9i学习日志(9)--数据字典与动态性能视图及练习
  4. 再见了微服务!全面拥抱 DDD 思想真正的价值!
  5. C语言 字符串转换成int、long和double型
  6. if the parser found inconsistent certificates on the files in the .apk.104
  7. python调用C函数库
  8. 云计算学习路线和经典资料推荐
  9. Leetcode: Validate Binary Search Tree
  10. oracle数据库实验讲义-读书笔记(一)
  11. Java IO: 文件
  12. PostgreSQL学习手册(数据库维护) 转
  13. 华为cor—al10_cor al10是华为什么型号 cor al10是华为啥型号
  14. win7系统任务管理器如何强制关闭程序
  15. 漫步数学分析八——集合边界
  16. UnityShader23:顶点动画
  17. 光环PMP 二模错题知识点
  18. 洛谷P5706 【深基2.例8】再分肥宅水__C++描述
  19. 一文带你全方位了解网卡
  20. 针对VC++ 上各种方法获取时间差,CSpanTime等

热门文章

  1. 李迅雷+但斌+趋势的力量+对话PPT
  2. R绘制QQ图并解读QQ图
  3. R包库安装及数据加载:一次安装多个R包、一次加载多个R包
  4. 对于图像分类任务,相对于全连接的DNN,CNN模型的主要优点有哪些?
  5. 绘制测试集、训练集的每一个病人或者样本的raidomics signiture图(绘制raidomics signature图),以及ROC曲线图
  6. 开源自动机器学习(AutoML)框架盘点
  7. 生物信息学常见数据格式 • fasta • fastq • gff/gtf
  8. tf.keras.losses.SparseCategoricalCrossentropy() 稀疏交叉熵 损失函数 示例
  9. html 跳转或打开新网页
  10. LeetCode 445. Add Two Numbers II--面试算法题--C++,Python解法