Python装饰器与线程结合如何提高接口访问效率
发表于:2025-02-24 作者:千家信息网编辑
千家信息网最后更新 2025年02月24日,这篇文章主要介绍了Python装饰器与线程结合如何提高接口访问效率,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。回顾装饰器的基本用法装
千家信息网最后更新 2025年02月24日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安全错误
数据库的锁怎样保障安全
中通吉网络技术有限公司待遇
全宅无线网络技术
钢钢好电脑版出现连接服务器失败
新元科技网络安全
前端在软件开发中的地位
phinx 数据库的迁移
数据库关系代数难题
敏捷软件开发流行工具
德惠先进网络技术口碑推荐
学君软件开发
2018网络安全宣传意义
宝鸡软件开发销售电话
光纤通讯网络技术
华三网络技术大赛试题
江阴dell服务器维修站
php连接服务器数据库
软件开发人员能力矩阵
江苏家校网络安全知识
华中科技大学线上互联网校赛开幕
想学数据库管理技术选什么专业
网络安全教程第五课
黄山保险软件开发公司哪家好
2021河南省高校网络安全知识
淘米网络安全海报
城阳网络技术公司招聘
网络安全和网络应用大专
图片如何存入数据库和取出来
为什么服务器虚拟化
服务器机柜供应商排名
数据库中汉字的字符类型