news 2026/6/26 8:43:11

大模型async await

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
大模型async await

一、核心结论:asyncawait不需要成对出现,二者职责完全分开

1.async:只用来标记「异步函数」

只要函数定义时写了async def,这个函数就变成协程函数,调用它会返回协程对象,和里面有没有await无关。

# 合法:async函数内部无任何awaitasyncdeftest_no_await():print("我是异步函数,但没用到await")return123

2.await:只能写在async def函数内部

await是用来挂起等待可等待对象(协程、Task、IO对象),它不能单独出现在普通def函数里。
规则:await的地方,外层函数必须带async


二、四种常见场景拆解(结合你截图里的代码举例)

场景1:只有 async,没有 await(合法)

# async标记函数,内部无await,完全合规asyncdefmain():print("无await的异步函数")

调用时依然需要asyncio.run(main())执行,只是函数内部没有阻塞等待逻辑。

场景2:async + await 成对出现(最常用,你的代码就是这类)

asyncdefmain():# result.stream_events() 是异步迭代器,async for 底层封装了awaitasyncforeventinresult.stream_events():print(event)

async for/async with本质是语法糖,内部自动使用await,等价于写了 await。
如果手动写等待:

asyncdefmain():res=awaitRunner.run_streamed(agent,input="xxx")

场景3:只有 await,没有 async(直接报错)

# 错误!普通def函数里不能写awaitdefsync_func():awaitsomething

报错:SyntaxError: 'await' outside function/await can't be used in a non-async function

场景4:多个 await 写在同一个 async 函数里(完全允许)

asyncdefmulti_await():a=awaittask1()b=awaittask2(a)c=awaittask3(b)returnc

一个async函数里可以写任意数量await,不存在一一对应关系。


三、结合你截图代码单独解释

asyncdefmain():# async:标记这是异步协程函数result=Runner.run_streamed(agent,input='讲一个故事至少300字?')# async for 是异步迭代语法,底层自动调用await获取流式事件asyncforeventinresult.stream_events():print(event)
  1. async def main():必须加async,否则不能用async for
  2. async for内部隐式包含await,所以这里有隐式await
  3. 末尾asyncio.run(main()):是入口,负责驱动协程运行。

如果你把main里的流式循环删掉,只保留简单逻辑,依然是合法async函数:

asyncdefmain():print("纯异步函数,内部无await/async for")

四、一句话总结记忆

  1. async是函数修饰符:定义异步函数,有无await都能写;
  2. await是等待关键字:只能存在于async def内部,一个async函数可包含N个await;
  3. 约束单向:await必须依赖async,但async不强制搭配await
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/26 8:35:09

电赛实战指南:从硬件设计到软件调试的工程能力跃迁

1. 项目概述:从“电赛”到工程实践能力的跃迁“电赛”这两个字,对于电子、自动化、通信等相关专业的在校生和初入行的工程师来说,分量极重。它通常指的是全国大学生电子设计竞赛,以及各省市、各高校组织的类似学科竞赛。但今天我想…

作者头像 李华
网站建设 2026/6/26 8:31:50

PVDF动态触觉传感技术及其在机器人灵巧操作中的应用

1. PVDF动态触觉传感技术解析PVDF(聚偏氟乙烯)是一种半结晶性聚合物材料,其分子链中的碳-氟键具有强极性,这种独特的分子结构赋予了它优异的压电特性。当PVDF薄膜受到机械应力时,内部偶极矩会发生变化,产生…

作者头像 李华
网站建设 2026/6/26 8:30:49

终极MP4视频修复指南:5分钟拯救你的珍贵记忆

终极MP4视频修复指南:5分钟拯救你的珍贵记忆 【免费下载链接】untrunc Restore a truncated mp4/mov. Improved version of ponchio/untrunc 项目地址: https://gitcode.com/gh_mirrors/un/untrunc 你是否曾经遇到过这样的烦恼:珍贵的家庭录像、重…

作者头像 李华
网站建设 2026/6/26 8:27:37

【独家】VMware Workstation Pro 17 + Hadoop 3.3.6 + ZooKeeper 3.8集群部署手册(含防火墙策略、SELinux调优、JDK11兼容性验证)

更多请点击: https://kaifayun.com 第一章:VMware Workstation Pro 17 环境构建与资源规划 在企业开发与测试场景中,VMware Workstation Pro 17 提供了稳定、隔离且可复现的虚拟化环境。部署前需综合评估宿主机硬件能力与目标虚拟机负载特征…

作者头像 李华