欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

python记录某函数块运行时间的“装饰器”的编写

程序员文章站 2021-12-29 11:52:13
文章目录一、装饰器的功能二、一个简单的统计某函数执行时间的装饰器代码实现一、装饰器的功能一、装饰器可以在不改动函数原代码和代码执行方式的同时,为某个函数添加新的功能,可以使得代码更简洁。同时,不改变源代码的特性,可以避免在更改源代码时,可能发生的牵一发而动全身的错误发生,导致原本运行正常的程序发生难以矫正的错误。二、不改变代码的执行方式,例如:在公司中,某函数的调用方式本为foo(),当为它加入新功能时,因为不使用装饰器,使得要使用新功能需要执行额外的代码,例如可能的:stat_time(fo...



一、装饰器的功能

一、装饰器可以在不改动函数原代码和代码执行方式的同时,为某个函数添加新的功能,可以使得代码更简洁。
同时,不改变源代码的特性,可以避免在更改源代码时,可能发生的牵一发而动全身的错误发生,导致原本运行正常的程序发生难以矫正的错误。
二、不改变代码的执行方式,例如:
在公司中,某函数的调用方式本为foo(),
当为它加入新功能时,因为不使用装饰器,使得要使用新功能需要执行额外的代码,例如可能的:stat_time(foo)。而因为公司不止你一人使用该新功能,但是其他人都习惯了原本foo()这样简单明了的函数调用方法,此时为了使得原调用方法同样能实现该新功能,就可以使用装饰器。

二、一个简单的统计某函数执行时间的装饰器代码实现

例如:

import time def stat_time(function): #时间统计函数 def inner(*args,**kwargs): start_time = time.time() function(*args,**kwargs) finish_time = time.time() print("op_time :%f\n"%(finish_time-start_time)) return inner #该装饰器的重点在于高阶函数的运用 def ccs(): print('ccs......') time.sleep(2) #代码运行时间过短,增加暂停方便记录运行时间 ccs = stat_time(ccs) ccs() @stat_time #等价于prent = stat_time(prent) def prent(): print('present......') time.sleep(2) prent() @stat_time def add(*args,**kwargs): #求和 num = 0 for i in args: num+=i print(num) time.sleep(2) add(3,4,4,5) 

输出:

ccs...... op_time :2.000534 present...... op_time :2.000541 16 op_time :2.000664 

二、装饰器内加装新功能(日志记录):

import time def show_time(floger=''): def stat_time(function): #时间统计函数 def inner(*args,**kwargs): start_time = time.time() function(*args,**kwargs) finish_time = time.time() print("op_time :%f"%(finish_time-start_time)) if floger=='true': print('日志记录\n') return inner return stat_time #该装饰器的重点在于高阶函数的运用 @show_time() def ccs(): print('ccs......') time.sleep(2) ccs() @show_time('true') def prent(): print('present......') time.sleep(2) prent() @show_time('true') def add(*args,**kwargs): num = 0 for i in args: num+=i print(num) time.sleep(2) add(3,4,4,5) 

输出:

ccs...... op_time :2.000159 present...... op_time :2.000657 日志记录 16 op_time :2.000106 日志记录 

本文地址:https://blog.csdn.net/qq_41725460/article/details/109060929

相关标签: 运行时间 python