用装饰器来监控函数是否超时(附源码)

理解装饰器的前提

  1. 所有东西都是对象(函数可以当做对象传递)
  2. 闭包

闭包的概念

  1. 函数嵌套
  2. 内部函数使用外部函数的变量
  3. 外部函数的返回值为内部函数

一个简单的闭包例子

def test(name):
    def test_in():
        print(name)
    return test_in

func = test('whyz')
func()

为什么需要装饰器

装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象。它经常用于有切面需求的场景,比如:插入日志、性能测试、事务处理、缓存、权限校验等场景。装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量与函数功能本身无关的雷同代码并继续重用

概括的讲,装饰器的作用就是为已经存在的函数或对象添加额外的功能

在各种场合,时间都是一个宝贵的概念。由此,便想到用装饰器来实现对指定函数是否超时的判断

Talk is cheap, show me the code

主要代码

 

从上面的图片可以看到,此装饰器为三层嵌套,最外层可以接收参数,定义多少秒为超时

内层主要使用到的技术就是信号,但Windows平台对信号的支持不足,因此该代码需要在类Unix平台运行

下载地址

点我下载

 

评论或私信站长


  1. #该文章暂时没有评论