1.我为什么会写这篇文章呢?
起源:咱们做python的,公司有java的哥们,需要对接,然后他非说我有两个返回不一样,一个是及时响应,一个是异步回调javaAPI,
解决;我去找代码逻辑,我看了一遍又一遍,问题就在这装饰器上还比较复杂,我一想会不会是函数里面开线程导致 装饰器会装饰函数 又会装饰线程呢?
最后:是java有两个方法,请求python两次,所以结果不一样
备注:不要误导,线程跟装饰器没关系
2.代码如下
# 测试装饰器 方法里面写线程
from threading import Thread
def t_fun():
print(f"我是线程方法")
def pre_fun(fun):
print(f"进入装饰器")
def wrapper(*args, **kwargs):
print(f"开始处理装饰操作")
fun(*args, **kwargs)
return wrapper
@pre_fun
def fun():
a = 1
print(f"执行fun")
t = Thread(target=t_fun,args=())
t.start()
fun()
View Code
3.打印如下
开始运行...
进入装饰器
开始处理装饰操作
执行fun
我是线程方法
4.总结
傻了吧
先执行装饰器,在执行函数
函数里是从上到下执行的,
跟你线程有半毛钱关系吗
-----------------------------------------------------------------------------------------------------------------------------------------