Python的yield
业务场景:一个FastAPI构建的网关,数据进来时立即给予一次响应,表示:“收到,我已开始执行。”,然后分发任务另起一个线程异步执行。
原本代码写的在异步里又起了一个异步等任务执行,这样不影响下面的return立刻响应。逻辑看起很繁琐,那有没有办法,能让函数在"return":“收到”之后,继续执行呢?这时候题主想到了yield。
以上内容与正题无关。
code:
def test():
for i in range(2):
if i == 0:
a = 'test函数已经开始执行'
else:
a = 'test函数已经执行结束'
yield a
print("执行中")
g = test() # 一个生成器对象
print('第一次调用:',next(g))
print('='*10)
print('第二次调用:',next(g))
output:
第一次调用: test函数已经开始执行
==========
执行中
第二次调用: test函数已经执行结束
我觉得这个demo比网上绝大部分文章更能一眼看懂这个yield是个咋回事。当然,这个用的很浅,也只能说明yield是个咋回事。