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

PYTHON+AI LLM DAY NINTY-TWO

今天来聊一下异步编程(Asynchrous programming).对比一下同步编程(Synchrous programming),例如def,class(面向对象编程)方法.是等一个方法执行完后,再执行下一个方法.在等待的过程中,CPU一直处于空闲状态.在多任务的编程过程中,效率很是低下.因此为提升任务的执行效率,异步编程应运而生.异步编程是对CPU性能的极致压缩,使其发挥出最大的效率.多任务的程,CPU一直处于高速运转状态.在一个任务正在执行的时候,CPU又在安排下一个任务.实现io密集型任务的高并发执行.在python语言中的异步任务模块是asyncio.定义异步函数(协程)的格式是async def 函数名1():对于函数2,同样定义 async def 函数2():如果在执行函数2的时候,马上执行函数1的话,可在函数2的内部用关键字await写入.具体是:await 函数名1(),然后写完函数2的函数体.最后执行也简单.asyncio.run(函数名2).最后就是先执行函数2,没等函数2执行完,就马上执行函数1.对于多个协程函数可以使用gather.具体做法是定义另一个协程函数,在这个协程函数内部,使用关键字await,在等待的过程是这样的:await asyncio.gather(放入多个协程函数),然后写入函数体,最后执行即可.这就是高并发任务.对于同步函数原则上是不能加入异步任务的,会造成任务阻塞.但在实际情况下,有时又不得不使用同步任务.因此可以将同步任务改造成异步函数加入到异步任务.要用到async模块里面两个函数:get_running_loop()和run_in_executor().具体做法是:先定义同步函数,然后定义异步函数.在异步函数里面.可以写入loop = asyncio.get_running_loop().然后await loop.run_in_executor(None,同步函数名,同步函数的参数(如果有的话)),返回.最后执行异步函数.对于要等待一段时间的异步函数可以将异步函数丢到后台执行.但是,时间较长的异步任务,可能在后台还没执行完,就被python的垃圾回收站给回收了,导致异步任务失败,常用的处理办法是使用create_task()和 add_done_callback()函数.具体做法是先声明后台任务的集合:backstage_run:set[asyncio.Task]=set().先定义一个异步任务.然后又定义一个异步函数.内部写入.task = asyncio.create_task(放入异步任务),这是将任务丢到后台.然后.backstage_run.add(task)这里是防止被清除,最后使用task.add_done_callback(backstage_run.discard).执行完自动清除.最后写完函数体.还有一个异步上下文管理.使用到contextlib包里面的asynccontextmanager语法糖.和yield关键字.具体是先使用语法糖@asynccontextmanager.定义异步函数1.先开始一个任务,换行写入yield关键字,然后结束任务.再定义一个异步函数2.使用async with 异步函数1.返回.最后执行异步函数2.yield生成器.也有函数的返回值.with是打开之后,使用完毕,自动关闭.防止内存溢出.yield关键字是用来管理上下文的.

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

相关文章:

  • vmware安装win10教程(保姆级图文):VMware16虚拟机部署Windows10,附win10镜像iso文件下载
  • OpenHarness源码研究-3-codex配置到输出对话
  • PDF转Excel免费工具推荐,批量转换不收费绿色版
  • Windows 11本地部署GLM-5.2大模型:集成Claw工具调用与Agent知识库实战
  • 零基础自学C++逆向学习日记 Day.5
  • 【题解-信息学奥赛一本通】1224:最大子矩阵
  • 【数仓避坑04】金额换算精度踩坑:先除后乘导致大额资金隐性资损,先乘后除精度最优详解
  • 当企业应用AI销冠系统时,如何利用数字员工提升工作效率?
  • 数据库工程:生产级查询优化全案例拆解‌
  • 企业级离线翻译架构重构:LibreTranslate 1.9.6如何实现数据主权与性能突破
  • 2026年AI企业服务系统五大评测:乔掌门AI与同类品牌深度对比排名推荐
  • 基于微积分思维的数学分析教学
  • 剑指offer-62、⼆叉搜索树的第k个结点
  • MonkeyCode维护与质量:让代码在生成阶段就具备安全与可维护性
  • 微服务的特点、优点、缺点
  • Linux 开发工具:yum、vim 与 gcc 实操指南
  • 别光看感量!KEMET共模电感手册里这8个参数,选型时一个都不能漏
  • 鲁棒MPC、分布式MPC与学习型MPC:三种“进化版”模型预测控制
  • 企业级智能运维平台实战解析:Keep如何终结警报疲劳
  • 7大编程语言核心区别全解析
  • GLM5.2本地部署实战:vLLM与llama.cpp方案详解,性能超越官方API
  • 无限积分,免费生成电商设计图,AI详情页
  • 软件交付即暴露:Virbox Protector 的加密与加固逻辑
  • OPNsense:开源防火墙系统的管理核心
  • 【计算机毕业设计案例】基于 SpringBoot 的农用车维修保养管理系统的设计与实现 基于 SpringBoot 的农业机械设备库存管控系统(程序+文档+讲解+定制)
  • 手机卖不动,运动相机凭什么逆势上涨?
  • 告别官方镜像:用Buildroot为香橙派Zero 3构建最小化主线Linux系统
  • 振弦采集仪与无线倾角计实测:传感器数据链路的瓶颈与闭环方案
  • 03目录和文件
  • TVA与具身智能深度融合的内在必然性(5)