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.总结
傻了吧 先执行装饰器,在执行函数 函数里是从上到下执行的, 跟你线程有半毛钱关系吗