Python装饰器与线程结合如何提高接口访问效率
发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,这篇文章主要介绍了Python装饰器与线程结合如何提高接口访问效率,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。回顾装饰器的基本用法装
千家信息网最后更新 2025年01月19日Python装饰器与线程结合如何提高接口访问效率回顾装饰器的基本用法
这篇文章主要介绍了Python装饰器与线程结合如何提高接口访问效率,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
回顾装饰器的基本用法
装饰器的本质是闭包,是python的一种语法糖
def outer(fun): def inner(*args,**kwargs): return fun(*args,**kwargs) return inner# 使用装饰器装饰一下两个函数@outerdef num1(): print('a')@outerdef num2(): print('b')if __name__ == '__main__': print(num1.__name__) print(num2.__name__)以上代码输出结果:innerinner装饰器的特性:使用自定义的装饰器会改变被装饰函数的函数名,一般装饰器器是不用考虑这一点的,但是如果多个函数被两个装饰器装饰就会报错,因为函数名一样
解决办法:引入 functools.wraps
import functoolsdef outer(fun): @functools.wraps(fun) def inner(*args,**kwargs): return fun(*args,**kwargs) return inner
以上代码输出结果:
num1
num2
实际业务中的应用
定义多线程的装饰器
def async_call(fun): def wrapper(*args, **kwargs): Thread(target=fun, args=args, kwargs=kwargs).start() return wrapper
可以在需要提升效率的接口上添加该装饰器
因为正常来说线程的执行效率要比进程快
可以用装饰器测试并统计函数运行时间
import timedef coast_time(func): def fun(*args, **kwargs): t = time.perf_counter() result = func(*args, **kwargs) print(f'func {func.__name__} coast time:{time.perf_counter() - t:.8f} s') return result return fun
这个装饰器有感兴趣的朋友可以保存起来,以后测接口性能可以直接拿过来用!
from time import sleepfrom time import timeimport timefrom threading import Thread#这是统计时间的装饰器def coast_time(func): def fun(*args, **kwargs): t = time.perf_counter() result = func(*args, **kwargs) print(f'func {func.__name__} coast time:{time.perf_counter() - t:.8f} s') return result return fun#这是创建线程的装饰器,感兴趣的可以保存一下,可以直接使用的def async_call(fun): def wrapper(*args, **kwargs): Thread(target=fun, args=args, kwargs=kwargs).start() return wrapper@coast_time@async_calldef hello(): print('start') sleep(2) print('end') returnif __name__ == "__main__": hello()
不创建线程的运行时间是:2s多
使用线程装饰器的时间:0.0003s
可以在引入functools.wraps,防止装饰多个函数的时候,函数名被改变
感谢你能够认真阅读完这篇文章,希望小编分享的"Python装饰器与线程结合如何提高接口访问效率"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!
函数
线程
接口
效率
时间
篇文章
兴趣
两个
代码
多个
朋友
结果
这是
统计
输出
运行
不用
业务
价值
办法
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
人力资源部软件开发工程师证
安徽六安软件开发培训排名
香港大学软件开发成果
浙江服务器管理软件云服务器
软件开发工程师需要的语言有什么
迪派斯网络技术
数据库表中名字修改
软件开发计划阶段
gta连不上服务器
万山天气预报软件开发
熟练网络安全维护
数据库多表查询结论
扬两优813数据库
深圳软件开发定制公司有哪些
欧瑞博服务器升级需要多久
自身网络安全心理建设论文
金智维软件开发的待遇怎么样
浙江库存软件开发平台
365网络技术学院
服务器管理员有前途吗
软件开发电脑应用
中公教育网络安全培训班
cod12数据库彩蛋
数据库技术包含哪些技术
db2数据库的表装载
服务器怎么开放端口安全
服务器群安全设置
创建苹果账户连接服务器失败
数据库表嵌套表
服务器管理员有前途吗