首页/新闻资讯/正文详情

彻底吃透:同步/异步、串行/并发/并行(Python线程/协程实例拆解,告别概念混淆)

发布时间:2026/9/27 15:33:02 来源:云帆数科 栏目:资讯中心
彻底吃透:同步/异步、串行/并发/并行(Python线程/协程实例拆解,告别概念混淆)
一、核心底层两大独立维度这是全文最核心的结论所有混淆全部源于此维度1等待机制 —— 区分【同步 / 异步】描述程序遇到IO等待时当前执行流的行为同步IO阻塞、原地死等线程被操作系统挂起全程什么都做不了异步IO挂起、让出控制权线程不阻塞事件循环可以调度其他任务维度2任务执行顺序 —— 区分【串行 / 并发 / 并行】描述多个任务之间的执行排布方式串行排队执行上一个任务完全结束下一个任务才开始并发单CPU核心任务快速交替切换执行宏观同时运行、微观串行协程、多线程IO场景并行多CPU核心多个任务同一物理时刻真正同时执行仅多进程可实现终极避坑我踩过的最大误区❌ 错误认知串行同步、并发异步✅ 正确认知两组概念自由组合互不绑定四种合法组合全覆盖同步串行、同步并发、异步串行、异步并发二、关键概念精准拆解附代码实例1. 同步 VS 异步IO等待的本质区别同步time.sleep() —— 线程阻塞执行同步IO时整个主线程卡死操作系统挂起线程无法执行任何其他任务。importtimedefwork_sync(n):print(f任务{n}开始)time.sleep(2)# 同步阻塞线程卡死print(f任务{n}结束)# 同步串行starttime.time()work_sync(1)work_sync(2)print(总耗时,time.time()-start)# 耗时4s异步await asyncio.sleep() —— 协程挂起执行异步IO时协程主动挂起、让出线程控制权线程不阻塞事件循环可以调度其他任务。重点协程挂起 ≠ 线程阻塞90%新手的核心误区importasyncioimporttimeasyncdefwork_async(n):print(f任务{n}开始)awaitasyncio.sleep(2)# 异步挂起线程空闲可切换任务print(f任务{n}结束)2. 异步串行误区将异步串行叫做“同步执行”。原理只创建协程对象不交给事件循环预加载await 一个、执行一个、跑完再下一个。特点异步IO机制 任务排队执行总耗时累加。asyncdefmain():starttime.time()# 仅创建协程对象未进入事件循环c1work_async(1)c2work_async(2)# 串行执行上一个结束下一个才启动awaitc1awaitc2print(总耗时,time.time()-start)# 耗时4sasyncio.run(main())定性异步串行异步等待机制 串行任务顺序3. 异步并发协程核心用法实现并发的唯一关键asyncio.create_task()核心逻辑创建Task将协程提前交给事件循环任务入队待命await Task仅等待任务结束不负责启动任务IO挂起时事件循环自动切换其他任务实现并发asyncdefmain():starttime.time()# 关键提前创建Task全部送入事件循环并发核心t1asyncio.create_task(work_async(1))t2asyncio.create_task(work_async(2))# 仅等待结果任务早已排队就绪awaitt1awaitt2print(总耗时,time.time()-start)# 耗时2sasyncio.run(main())定性异步并发单线程、无阻塞、任务交替执行IO密集场景神器4. 并发 VS 并行终极区分并发协程/多线程单CPU核心、单线程/多线程快速切换微观不同时宏观同时跑。asyncio协程永远只能并发无法并行全程单主线程。并行多进程专属多CPU核心多个任务物理同一时刻同时执行突破单线程限制适合CPU密集计算。frommultiprocessingimportProcessimporttimedefwork_parallel(n):print(f任务{n}开始)time.sleep(2)print(f任务{n}结束)if__name____main__:starttime.time()p1Process(targetwork_parallel,args(1,))p2Process(targetwork_parallel,args(2,))p1.start()p2.start()p1.join()p2.join()print(总耗时,time.time()-start)# 耗时2s真正并行三、四大组合场景全覆盖组合类型实现方式耗时特点适用场景同步串行普通函数 time.sleep 顺序执行时间累加简单顺序业务同步并发多线程 同步IO时间重叠老旧IO任务异步串行await 协程对象 顺序执行时间累加有依赖的异步任务异步并发create_task await Task时间重叠爬虫、网络、接口、IO密集四、我遇到的高频踩坑总结复盘坑1课程口语误区老师口中同步串行、异步并发口语简化标准定义绝对不能划等号面试、开发必须用标准概念坑2协程对象 VS Task对象work()生成协程对象不执行、不进事件循环create_task(work())生成Task任务立即入队待命await 协程对象串行执行await Task对象仅等待不启动任务坑3await 一定切换任务吗不是只有await 真实IO/asyncio.sleep才会挂起协程、切换任务。如果await普通无阻塞协程只会快速执行无并发效果。坑4asyncio.run 为什么阻塞主线程协程挂起是任务层面的暂停而asyncio.run()是事件循环入口会持续占用主线程等待所有任务结束所以主线程阻塞但线程内部不卡死可切换任务。坑5协程是并行吗不是协程是单线程异步并发无法利用多核CPU不是并行。五、最终选型指南开发直接用IO密集型爬虫、网络请求、Socket、数据库首选 asyncio 异步并发效率最高、开销最小CPU密集型大数据计算、循环运算首选 多进程并行突破GIL锁限制任务有先后依赖使用异步串行保证执行顺序简单同步业务普通同步串行即可六、极简总结背诵版同步、异步是IO等待机制同步线程阻塞死等异步协程挂起、线程空闲可调度其他任务。串行、并发、并行是任务执行方式串行排队执行并发单核心快速切换并行多核心同时执行。Python协程是单线程异步并发适用于IO密集场景无法实现并行多进程可实现真正并行。两组概念相互独立可自由组合常见异步串行、异步并发、同步串行、同步并发四种场景。七、通俗生活化比喻一秒读懂所有概念为了彻底摆脱枯燥理论结合日常场景类比完美对应线程、协程的执行逻辑零基础也能秒懂人物设定1个店员 1条主线程Python单线程协程只有这一个店员接待顾客 执行任务等待顾客付款/取单 IO等待1. 同步 串行普通代码店员接待顾客A全程站在原地死等A付款一动不动A全部办完才接待顾客B。特点等待时彻底卡死啥事不干效率最低。2. 异步 串行误称“同步”的代码店员懂异步规则顾客等待时不会原地卡死但严格排队办事。先服务AA进入等待后也不处理B全程等A结束再启动B。特点机制是异步无线程阻塞执行顺序是串行任务排队这也是课程最大的概念误区3. 异步 并发协程核心店员极致高效同时接单A、B、C。A等待付款时立刻转头服务BB等待时立刻服务C。谁的IO等待结束立刻回头处理谁。特点全程只有1个店员单线程微观一次只处理一个人宏观所有人业务都在推进这就是并发。4. 并行多进程直接雇佣3个店员3个CPU核心/多进程A、B、C三个人同时被接待互不干扰。特点真正物理同时执行仅此一种属于并行。八、全文终极总结核心复盘维度隔离是核心同步/异步只管「IO等待时卡不卡线程」串行/并发/并行只管「多个任务怎么跑」两组概念无绑定、可自由组合。阻塞与挂起天差地别同步是线程级阻塞全员卡死异步是协程级挂起线程空闲、可切换任务是异步编程的核心本质。协程两大关键特征只有create_task能实现并发单纯await 协程对象只能串行asyncio.run阻塞主线程是等待事件循环结束而非线程卡死。并发≠并行协程、多线程都是单核心任务切换属于并发只有多进程依托多核CPU才是真正并行。业务选型铁律IO密集用异步并发协程、CPU密集用多进程并行、任务依赖用异步串行、简单业务用同步串行。

相关推荐

Windows下vscode配置C/C++编译环境:用TaoToken统一管理API Key与settings.json骨架
Windows下vscode配置C/C++编译环境:用TaoToken统一管理API Key与settings.json骨架

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 15:33:02

动易网站只能进首页怎么修?别被坑,这方案才300块
动易网站只能进首页怎么修?别被坑,这方案才300块

动易网站只能进首页怎么修?别被坑,这方案才300块 找建站公司最怕什么?怕你刚把域名交过去,对方张口就要几千块,还说这是“标准配置”。更坑的是,钱付了,网站上线没两天,后台正常,前台却死活只能进首页,点任何栏目全是404或者跳转回主页。这时… · 2026/9/27 15:32:56

告别 akshare 依赖!a-stock-data V3.0 A 股全栈数据工具包:7 层架构一站式搞定投研数据
告别 akshare 依赖!a-stock-data V3.0 A 股全栈数据工具包:7 层架构一站式搞定投研数据

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 15:32:50

gitnexus 的使用:用 MCP server 打通 node/npm 工作流并接入 TaoToken
gitnexus 的使用:用 MCP server 打通 node/npm 工作流并接入 TaoToken

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 16:25:55

做网站灰色网站怎么判刑?10年操盘手揭秘:从建站报价看生死红线
做网站灰色网站怎么判刑?10年操盘手揭秘:从建站报价看生死红线

做网站灰色网站怎么判刑?10年操盘手揭秘:从建站报价看生死红线 网站做好了没人访问,比做出来就烂尾更让人心焦。你盯着后台那寥寥无几的UV,焦虑地翻着同行的 建站报价 , wondering… · 2026/9/27 16:25:48

网站建设技术哪些核心构成与建站报价避坑指南
网站建设技术哪些核心构成与建站报价避坑指南

网站建设技术哪些核心构成与建站报价避坑指南 域名买好了,服务器租了,结果打开浏览器一片空白,或者加载慢得让人想砸键盘。这种“域名服务器搞不懂”的挫败感,是无数初创团队和中小企业在官网建设初期最真实的噩梦。很多运营人员拿着手里那点可怜的预算,… · 2026/9/27 16:25:36

北京网站建设培训班揭秘:最佳实践让网站流量翻倍
北京网站建设培训班揭秘:最佳实践让网站流量翻倍

北京网站建设培训班揭秘:最佳实践让网站流量翻倍 网站做好了没人访问,这大概是很多刚入行或想转行做前端的朋友最头疼的事。花了大半个月甚至几个月,吭哧吭哧把页面切完、功能调通,上线后打开后台一看,日UV(独立访客)个位数,甚至为0。这时候你才明… · 2026/9/27 16:25:36

wordpress装百度统计图解步骤:避开高价坑的实操指南
wordpress装百度统计图解步骤:避开高价坑的实操指南

wordpress装百度统计图解步骤:避开高价坑的实操指南 找建站公司怕被坑高价?别急着掏钱,先看懂这篇wordpress装百度统计的图解步骤。很多老板为了省那几百块代码费,结果网站上线三个月,流量还是零,钱花得冤枉。… · 2026/9/27 16:25:30

CRMEB内置高频Skill实战:用TaoToken统一Key打通电商系统AI辅助开发链路
CRMEB内置高频Skill实战:用TaoToken统一Key打通电商系统AI辅助开发链路

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 16:25:30

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码