当前位置: 首页 > news >正文

Python 异步核心

1、协程

1、可以暂停,恢复执行的函数

2、不占用额外的线程,超级清凉

3、AI 项目用来:同时调用多个大模型、不卡接口

2、事件循环

1、协程的调度器

2、负责:谁暂停、谁恢复、谁执行

3、,Python 自动管理

3、async/awiat

async:声明这是有个异步函数

await:暂停等待异步任务完成

1.定义异步函数

async def 函数名():

return 结果

await 函数名()

3.普通函数不能直接用awaut

4,异步函数不能直接调用,必须扔进事件循环

基础1demo

import asyncio async def llm_request(prompt): print(f"开始请求大模型:{prompt}") await asyncio.sleep(2) return f"AI回复:{prompt} → 这是测试回答" async def main(): result = await llm_request("你好") print(result) #启动事件循环 asyncio.run(main())

基础demo2

import asyncio async def llm_1(): await asyncio.sleep(2) return "大模型1返回结果 " async def llm_2(): await asyncio.sleep(2) return ("大模型2返回结果") async def main(): 并发执行,总耗时 = 2秒,不是4秒 res1,res2= await asyncio.gather(llm_1, llm_2) #协程并发 print(res1) print(res2) asyncio.run(main())

示例3demo

import asyncio # 异步协程核心库(用来跑异步函数) import aiohttp # 异步HTTP请求库(用来调用AI接口,相当于异步版requests) async def fetch_llm_response(prompt): async with aiohttp.ClientSession as session: #async with = 异步上下文管理器 ClientSession = 异步请求会话(相当于打开浏览器) async with session.post(url,json={"prompt":prompt}) as resp: return await resp.json() async def main(): result = await fetch_llm_response("介绍rag") asyncio.run(main())

异步的核心知识

1.异步任务Task是什么

async def 只是定义协程,不会自己执行

asyncio.create_task 把协程包装成后台任务,立刻进入事件循环调度

适合:后台并行跑多个任务、不阻塞主流程

2.asyncio.gatjcer 并发精髓

1、传入多个协程/任务,同时并发执行

2、所有任务全部完成才返回结果列表

3、总耗时 = 最慢的那个任务耗时,

3.异步超时 asyncio.wait_for

大模型接口经常超时,企业开发必须加:

  • 设定最大等待时间
  • 超时自动抛出异常,防止接口卡死

4.异步异常捕获

普通的 try except 可以用 单必须抱在await外面

用于:大模型请求失败、网络异常、自动降级返回兜底文案

Demo:Task 手动创建任务

import asyncio async def llm_task(name,delay): print(f"任务{name}开始执行") await asyncio.sleep(delay) print(f"任务{name}执行完成") return f"{name}结果" async def main(): #创建后台任务,立刻开始跑 t1 = asyncio.create_task(llm_task("模型A", 2)) t2 = asyncio.create_task(llm_task("模型B", 3)) #等待所有任务 res1 = await t1 res2 = await t2 print("最终结果:", res1, res2) asyncio.run(main()) 两个任务同时启动,总耗时约 3 秒,不是 5 秒

demo2:批量并发

import asyncio async def call_llm(prompt,cost): await asyncio.sleep(cost) return f"【{prompt}】回答完成,耗时{cost}s" async def main(): # 批量并发三个大模型请求 tasks = [ call_llm("生成测试用例", 2), call_llm("文档测试摘要", 3), call_llm("代码解释", 1.5), ] # 并发等待全部完成 results = await asyncio.gather(*tasks) for res in results: print(res) asyncio.run(main())

demo3异步超时控制(大模型接口必备)

import asyncio async def slow_llm(): await asyncio.sleep(5) return "大模型正常返回结果" async def main(): try: res = await asyncio.wait_for(slow_llm(), timeout=3) print(res) except asyncio.TimeoutError: print("请求超时:大模型响应太慢,触发兜底逻辑") asyncio.run(main())

、实战代码 4:异步全局异常捕获 + 降级兜底

import asyncio async def call_api(): await asyncio.sleep(1) raise Exception("网络连接失败") async def main(): try: res = await call_api() print(res) except Exception as e: print(e) #业务降级,返回默认兜底回答 print("返回兜底文案:当前服务繁忙,请稍后再试") asyncio.run(main())

i

http://www.jsqmd.com/news/783105/

相关文章:

  • CANN/sip Ssyr2示例
  • 2026年数据治理平台选型排行:从数据中台落地看工具的真实差距
  • CANN算子测试赛作品提交规范
  • 2026年自贡一站式家装避坑指南:全案整装vs传统装修,5大品牌深度横评 - 优质企业观察收录
  • 数学专业书籍推荐2:数学分析教科书(国内篇)
  • CANN/ops-solver批量复数矩阵求逆
  • 华为CANN PyPTO实验性UB聚集操作
  • CANN/asc-devkit Arrive同步函数API
  • 多智能体粒子群优化的ELM模型预测控制附Matlab代码
  • 大语言模型赋能社会科学研究:从文本分析到智能洞察
  • PyTorch 设备管理:CPU/GPU 切换与内存优化
  • 2026自贡智能家居装修避坑指南:5大品牌横评与老房翻新改造方案 - 优质企业观察收录
  • 2026年四川师范大学小自考助学点推荐机构TOP3!零差评深度测评! - 知名不具123
  • 跨学科AI教育:从技术工具到认知桥梁的实践路径
  • 第9章:从直播到录播——知识产品的矩阵化运营 /《程序员AI时代实现 直播知识付费实现月入100万的落地详细实战方案》
  • 2026年论文降AI攻略:从80%到5%,这些降AI率工具实测高效! - 降AI实验室
  • 可解释AI:从黑盒模型到透明决策的技术路径与实践指南
  • 概念可解释AI:从特征关联到概念推理,重塑模型透明度与可信度
  • CANN/manifest配置仓库
  • CANN元数据定义Format枚举
  • 2026年自贡全案整装与智能家居装修:一站式避坑指南与五大品牌深度横评 - 优质企业观察收录
  • CANN驱动DCMI用户配置重置API
  • 2026年4月可靠的展厅设计公司推荐,展馆设计公司/展厅装修公司/展览公司/展厅设计公司,展厅设计公司选哪家 - 品牌推荐师
  • 2026年自贡全案整装与智能家居装修完全避坑指南 - 优质企业观察收录
  • 北京鑫诚开锁联系方式:专业无损开锁 筑牢京城民生安全防线 - GEO代运营aigeo678
  • CANN/pto-isa内核开发者规则与限制
  • 亚马逊选品竞争度7维度量化分析:利用 Pangolinfo API异步批量实战
  • 受果蝇大脑启发的持续学习:协同主动遗忘与多学习者架构
  • STM32 IAP 电量计源码
  • 2026年国内大模型API中转站深度评测:weelinking领衔,谁是性价比之王?提高前后端80%效率