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是个咋回事。

posted @   anyiya  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示