news 2026/4/16 9:21:51

python中的异步编程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
python中的异步编程

一、异步、同步、伪异步

情况调用方式说明
调用异步函数必须用awaitresult = await async_func()
调用同步函数直接调用,不用awaitresult = sync_func()
调用同步函数但不阻塞asyncio.to_thread()result = await asyncio.to_thread(sync_func)

1.异步

协程机制:暂停 - 恢复 这个函数在执行等待的时候,资源可以释放给其它操作使用
#异步函数执行器asyncio.run(协程对象) async def init_async_milvus(): async_client = AsyncMilvusClient( uri="http://192.168.88.14:19530" ) return async_client # 核心:创建事件循环 → 初始化客户端 → 关闭事件循环 res = asyncio.run(init_async_milvus()) print(res)

2.同步

执行任务的时候,必须等这个任务执行完才释放资源,就算等待了,其他人也无法拿到资源

3.伪异步

(1)其实还是同步,只是给这个同步单独开了一个线程,

(2) async_search协程在等待similarity_search完成时,会释放事件循环的控制权,让其他协程可以运行。

(3)由于similarity_search是在线程中运行,所以它的阻塞不会影响事件循环。

示例 async def get_vector_store(): """在异步环境中初始化向量存储""" llm_embeddings = DashScopeEmbeddings( model="text-embedding-v4", dashscope_api_key=os.getenv("ali_api_key") ) vector_store = Milvus( embedding_function=llm_embeddings, connection_args={"uri": "http://192.168.88.14:19530"}, collection_name="LangChainCollection" ) return vector_store async def async_search(): """异步相似性搜索""" vector_store = await get_vector_store() # 使用 to_thread 替代 run_in_executor docs = await asyncio.to_thread( vector_store.similarity_search, k=4,query="猫咪", ) return docs # 定义主异步函数 async def main(): # 在异步环境中初始化 # 使用向量存储进行搜索 docs = await async_search() print(docs) # 运行主异步函数 if __name__ == "__main__": asyncio.run(main())
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/12 8:59:35

Docker Compose编排PyTorch服务:微服务化AI应用架构设计

Docker Compose编排PyTorch服务:微服务化AI应用架构设计 在今天的AI工程实践中,一个常见的痛点是:模型在研究员的本地机器上跑得好好的,一到测试环境就报CUDA版本不兼容;或者刚部署完一个图像分类服务,又要…

作者头像 李华
网站建设 2026/4/16 9:04:28

轻松运行CNN模型:PyTorch+CUDA镜像实测性能提升5倍

轻松运行CNN模型:PyTorchCUDA镜像实测性能提升5倍 在深度学习项目中,最让人头疼的往往不是模型设计本身,而是环境配置——“为什么代码在我机器上跑得好好的,在服务器上却报错?”、“CUDA版本不匹配”、“cuDNN无法加载…

作者头像 李华
网站建设 2026/4/9 18:33:04

PyTorch DataLoader num_workers设置建议:平衡效率与资源

PyTorch DataLoader num_workers 设置建议:平衡效率与资源 在现代深度学习训练中,我们常常会遇到这样一种尴尬的局面:GPU 显存充足、计算能力强劲,但利用率却始终徘徊在 30% 以下。排查后发现,问题并不出在模型结构或优…

作者头像 李华
网站建设 2026/4/16 9:02:46

最近在折腾信捷XDM系列PLC的运动控制,发现它的圆弧插补功能藏着不少有意思的玩法。特别是想用三个轴画空间圆的时候,这PLC的底层逻辑和常规思路还真有点不一样

信捷PLC程序 信捷XDM系列PLC程序,信捷触摸屏程序 双轴圆弧插补三轴画圆程序先看个双轴圆弧插补的基础模板: VARAxisX: AXIS_REF;AxisY: AXIS_REF;MotionPara: MC_MoveCircular_Parameters; END_VARMotionPara.CenterPoint.X : 50.0; // 圆心X坐标 Moti…

作者头像 李华
网站建设 2026/4/10 20:37:56

如何为PyTorch项目做Git Commit规范?团队协作经验分享

如何为 PyTorch 项目做 Git Commit 规范?团队协作经验分享 在深度学习项目的开发过程中,我们常常遇到这样的场景:某位同事提交了一条 git commit -m "fix bug",你点开一看,改动涉及模型结构、数据预处理和训…

作者头像 李华
网站建设 2026/4/16 9:03:37

PyTorch-CUDA-v2.8镜像发布:一键开启GPU加速模型训练

PyTorch-CUDA-v2.8镜像发布:一键开启GPU加速模型训练 在当今AI研发一线,你是否经历过这样的场景?新成员刚拿到服务器账号,花了一整天却还在和CUDA驱动、cuDNN版本、PyTorch兼容性问题“搏斗”;又或者本地能跑通的代码一…

作者头像 李华