Python中同步异步编程原来是这样!附代码案例

有人问,Python中所谓的同步异步编程到底是什么呀?

同步异步其实很好理解,比如你去某站下载视频,有两种情况,分别代表同步和异步。

1、点击下载视频A,等A下载好后,再点击下载视频B,以此类推下载所有视频。

2、点击下载视频A,不管是否下载好,然后立即点击下载视频B,各下载任务同时进行中,以此类推下载所有视频。

第1种是同步,是排队执行,只有前一个任务完成后才执行后一个任务。

第2种是异步,边干边等,利用等待时间去处理其他任务,可以多个任务灵活并行。

如果不考虑网速带宽,第1种效率很明显会低于第2种。

下面咱们用Python代码测试下,首先是同步执行下载任务。

# 测试:使用同步代码 import time def dowload(name): print(f"{name}开始下载") time.sleep(2) # 模拟视频下载耗时 print(f"{name}下载完成") begin = time.time() dowload("视频A") # 必须等A下载完... dowload("视频B") # ...才会开始下载视频B end = time.time() print("用时{}秒".format(end - begin))

结果如下,用时4秒+。

因为同步会阻塞,视频A下载好了才开始下载视频B。

接下来使用异步编程来实现同样的任务。

这里注意下,Python中使用异步编程,需要async/await特殊语法。

# 测试:使用异步代码 import asyncio import time asyncdef dowload(name): print(f"{name}开始下载") await asyncio.sleep(2) # 非阻塞等待 print(f"{name}下载完成") asyncdef main(): await asyncio.gather( dowload("视频A"), dowload("视频B") ) begin = time.time() asyncio.run(main()) end = time.time() print("用时{}秒".format(end - begin))

结果如下,只用了2秒+。

异步不用等待A下载完成,直接下载B,两个同时进行,不存在等待阻塞。

这下就很好理解同步和异步的原理和区别了,同步是排队干活,异步并不是同时干很多活,而是灵活的分配精力在多个任务上,不因为等待而耗费时间。

那同步和异步的使用场景有哪些呢?

同步适合那些严格依赖执行顺序的任务,比如订单任务(下单->发货)、转账任务(扣款->入账)等,还有CPU计算密集型任务,像是数学计算、图像处理等。

异步则适合那些IO操作密集型和高并发的任务,比如给用户发消息、web网页请求、文件读写、文件下载和上传等,这些任务的特点是需要等待时间,异步能提高任务执行效率。

所以说同步异步适合不同的业务场景,并不存在好坏对错之分。

下表是一些场景和案例对比,供参考。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1145696.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Orange,可以拖拉拽的Python数据挖掘软件,强烈推荐~

推荐Python,因为Python有太多神奇的数据分析库可以用了,Orange就是其中一个。大家知道Python是数据分析挖掘的核心编程语言,但一般门槛较高,你得掌握pandas、numpy、sklearn、keras等复杂的数据处理和机器学习框架,才能…

大模型技术入门:程序员如何抓住AI风口,抢占职场先机_35岁程序员抓住风口,转行AI大模型

文章强调大模型是当前技术风口,大厂急招人才而其他岗位裁员,程序员应抓住机遇避免淘汰。文章介绍大模型概念,提供35岁程序员转行路径,包括基础知识学习、实践操作、关注行业动态等。同时分享系统学习资源和七阶段学习路线&#xf…

Anthropic大模型智能体评估全攻略:理论+实践,助你成为AI专家

本文全面介绍了AI智能体评估体系的重要性与构建方法,涵盖评估基本构成、评分器选择、战略设计及四类主流智能体评估方案。文章提供了从零开始的评估框架路线图,强调评估的复利价值,倡导"评估驱动开发"文化。通过组合自动化评估、生…

通信原理篇---单极性不归零码功率谱密度

第一幕:重新认识我们的“老熟人”首先,回忆一下单极性不归零波形(Unipolar NRZ):1 持续高电平(比如1V)0 持续低电平(0V)发送一串随机数据时,波形看起来像高…

论文写作速度跟不上?推荐10款AI工具,AIGC降重+快速生成初稿,轻松提升效率

�� AI工具性能速览表 工具名称 核心功能 处理时间 AI生成率控制 适配检测平台 askpaper 降AIGC率降重同步 20分钟 个位数 知网/格子达/维普 秒篇 AI痕迹深度弱化 20分钟 个位数 知网/格子达/维普 aicheck 全学科初稿生成 20-30分钟 低…

【Java集合】深入浅出 Java HashMap:从链表到红黑树的“进化”之路

🍂 枫言枫语:我是予枫,一名行走在 Java 后端与多模态 AI 交叉路口的研二学生。 “予一人以深耕,观万木之成枫。” 在这里,我记录从底层源码到算法前沿的每一次思考。希望能与你一起,在逻辑的丛林中寻找技术…

HCIP代码小练-2

网络架构PC1和PC2电脑配置AR1的基础配置缺省路由实现全网通AR2的基础配置匹配回包的静态路由AR3的基础配置缺省路由实现全网通PC1和PC2实现私网互联(建立GRE链接)AR1配置GREAR3配置GRE测试AR1是否可以ping通AR3检查PC1PC2的情况是否可以ping通验证通过实现PC1与PC2是否可以直接…

通信原理篇---双极性不归零码的功率谱密度

第一幕:回顾与对比先快速对比两种编码的“体质差异”:特性单极性NRZ双极性NRZ表示1V(如1V)V(如1V)表示00V-V(如-1V)平均电压(等概率时)0.5V0V核心问题有直流分…

HCIP代码小练-1

进行网段划分:1.区分还回网段(环回接口:路由器的虚拟接口,一般用于模拟测试,不需要设备支撑)及骨干链路的网段划分。2.将192.168.1.0 24 划分成两个子网并进行环回网段的分配。3.因为骨干链路只用两个接口&…

通信原理篇---单极性归零码与双极性归零码

第一部分:单极性归零码第一幕:老问题和新思路还记得单极性不归零码(NRZ)吗?亮1秒1,灭1秒0。它的最大问题是:长时间发1时,信号一直是平的,接收方容易丢节奏。怎么解决&…

【无人机路径规划】基于快速随机扩展树算法RRT避开长方体、圆柱体、球体三类障碍物,生成从起点到终点的无碰撞路径附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 🍎 往期回顾关注个人主页:Matlab科研工作室 👇 关注我领取海量matlab电子书和数学建模资料 &#x1…

【数据驱动】基于时域数据的分数混沌系统的稀疏识别附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 🍎 往期回顾关注个人主页:Matlab科研工作室 👇 关注我领取海量matlab电子书和数学建模资料 &#x1…

C++ IDE

一、先明确核心需求:不同场景选不同 IDEC IDE 的选择核心看你的使用场景 —— 是新手入门、高校学习,还是企业级开发、跨平台项目,不同场景的最优解不同,先帮你梳理主流选项:IDE 名称核心定位新手友好度适用场景收费 /…

AI原生应用开发:自然语言理解开源工具推荐

AI原生应用开发:自然语言理解开源工具推荐 关键词:AI原生应用、自然语言理解(NLU)、开源工具、意图分类、实体识别、对话系统、多模态交互 摘要:在AI原生应用(AI Native Apps)时代,让…

浩思动力混动系统赋能吉利雷达金刚PHEV高性能皮卡上市

近日,浩思动力超级电混系统正式搭载于吉利雷达金刚PHEV山地版车型。该车型为混动皮卡,以“山地高原动力之王”为定位,面向西南、西北等高原及山区复杂地形,覆盖户外运输工程作业、越野探险等应用场景,充分展现了浩思动力在高性能混合动力领域的系统化技术实力。作为新一代动力总…

虚拟机假死?SSH 能连却卡 Logo 界面

title: “虚拟机假死?SSH 能连却卡 Logo 界面” date: 2026-1-11 20:30 categories: [技术] tags: [技术,分享] 虚拟机假死?SSH 能连却卡 Logo 界面 作为一名后端开发,虚拟机常常是我们用来跑中间件(MySQL、Redis、Roc…

《Numba AOT编译核心技术:斩断JIT启动延迟的实操手册》

Numba的JIT编译曾凭借动态代码加速能力成为很多开发者的首选,但它存在的冷启动滞涩感却在不少低延迟需求场景里成为难以突破的技术壁垒,尤其是在工业实时监测、高频数据推理这类对响应速度要求严苛的领域,这种滞涩感带来的负面影响会被无限放大。比如在某实时工业传感器数据…

图像形态学+边缘检测及CNN关联

引言:今天的学习围绕“图像特征提取”展开,从传统的图像形态学操作,到精准的Sobel边缘检测,再到深度学习中CNN的核心逻辑,我们一步步揭开了计算机“看懂”图像的底层原理。传统算法是深度学习的基础,而深度…

连锁饮品店安全用电白皮书:能源设备智能管控与预警

1.背景随着消费升级浪潮的推进,连锁饮品行业迎来规模化扩张高峰,全国门店数量已突破50万家,密集分布于商圈、社区、交通枢纽等人员聚集区域。然而,在行业高速发展的背后,用电安全隐患正成为制约企业稳健运营的核心痛点…

踩坑三个月,我用 Blazor 重构了一个 AI UI 协议,这些教训值得你看看

写在前面 说实话,接手这个项目的时候我心里是打鼓的。 你知道那种感觉吗?老板丢过来一个需求:"AI 要能动态生成 UI,而且要跨平台、安全、还要支持 Blazor"。我当时就在想,这不是要我上天吗? 但…