Python 中的同步\异步

发布时间:2026/10/29 10:08:50

Python 中的同步\异步 一、相关概念概念解释区别并发多个任务交替执行看起来像同时逻辑上的同时并行多个任务真正同时执行物理上的同时同步任务按顺序执行一个等一个阻塞等待异步任务不等待做完再通知非阻塞二、并发 vs 并行示例import threading import time # 并发单核CPU快速切换 def concurrency_demo(): def task(name): for i in range(3): print(f{name}: {i}) time.sleep(0.1) t1 threading.Thread(targettask, args(A,)) t2 threading.Thread(targettask, args(B,)) t1.start() t2.start() t1.join() t2.join() # 输出交替出现A0, B0, A1, B1, A2, B2 # 并行多核CPU真正同时执行 # Python 由于 GIL多线程无法真正并行需要用多进程 from multiprocessing import Pool def parallel_demo(): def square(x): return x * x with Pool(4) as p: # 4个进程并行 result p.map(square, range(10)) print(result)区别维度并发并行核心数单核或多核必须多核执行方式交替执行同时执行Python 支持线程、协程多进程GIL 影响线程受 GIL 限制进程不受 GIL 限制三、同步 vs 异步示例import asyncio import time # 同步 def sync_task(): print(开始下载) time.sleep(2) # 模拟耗时 I/O阻塞等待 print(下载完成) return data def sync_demo(): print(同步开始) result sync_task() # 等待 2 秒 print(继续执行) print(f结果: {result}) # 异步 async def async_task(): print(开始下载) await asyncio.sleep(2) # 非阻塞让出控制权 print(下载完成) return data async def async_demo(): print(异步开始) task asyncio.create_task(async_task()) print(继续执行不等待下载完成) result await task # 等结果就绪再获取 print(f结果: {result}) # 运行异步 # asyncio.run(async_demo())同步输出同步开始 开始下载 [等待 2 秒] 下载完成 继续执行 结果: data异步输出异步开始 开始下载 继续执行不等待下载完成 [等待 2 秒后] 下载完成 结果: data区别维度同步异步等待方式阻塞等待非阻塞等待资源利用等待时浪费 CPU等待时可以做其他事编程复杂度简单相对复杂适用场景简单脚本、CPU 密集型I/O 密集型、高并发四、实现方式场景推荐方案说明并发I/O密集型asyncio、threading协程最优线程次之并行CPU密集型multiprocessing绕过 GIL同步普通函数调用最简单异步async/await需要事件循环示例import asyncio import time from concurrent.futures import ThreadPoolExecutor, ProcessPoolExecutor # 模拟 I/O 操作 async def io_task(name): print(f{name}: 开始 I/O) await asyncio.sleep(1) # 模拟网络请求 print(f{name}: I/O 完成) return f{name} 结果 # 模拟 CPU 密集型任务 def cpu_task(n): return sum(i * i for i in range(n)) # 异步并发协程 async def async_concurrent(): tasks [io_task(f任务{i}) for i in range(5)] results await asyncio.gather(*tasks) print(f异步并发结果: {results}) # 多进程并行 def parallel(): with ProcessPoolExecutor() as executor: results list(executor.map(cpu_task, [10**7] * 4)) print(f并行计算耗时: {time.time() - t:.2f}s)
延伸阅读

更多相关文章

2026/10/28 2:25:23

竖屏4K视频处理:FFprobe参数分析与FFmpeg转码压缩实战

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

2026/10/28 4:59:24

企业智能体开发公司洗牌,分形科技全栈自主实力跻身第一梯队

企业智能体赛道正经历从概念验证到规模化落地的关键转折。企业客户不再满足于通用大模型带来的泛化交互能力,而是需要真正理解业务、能够调用系统、自主执行多步骤任务的数字员工。这一需求变化直接反映在行业格局上,那些具备全栈自研能力和完整交付体系…

2026/10/27 5:12:00

Level 4自动驾驶系统设计51——中间件 1

10.2 DDS 服务质量策略(QoS)分级配置:Reliable(规控指令)与 Best-Effort(点云数据) 10.2.1 面向数据中心架构(Data-Centric)的全局资源调配赤字 在 10.1 节中,我们确立了在千兆车载以太网(1000Base-T1)骨干网中,采用数据分发服务(DDS)作为海量多模态感知特征流…

2026/10/29 10:04:45

岸基设备服务接入设计方案(L3 修订版)

本方案设计岸基平台设备服务接入机制:自建独立安全台账表,与MES主数据隔离;采用“只读引用+开放接口写回”模式,通过开关控制是否同步至MES,确保默认不干扰现有系统。船号绑定由MES接口完成,状态变更由MES内部维护,避免语义冲突。关键流程如船号变更、自动建船等均在开关…

2026/10/29 9:59:44

ponytail效率工具:轻量级信息聚合与快捷操作实战指南

1. 从“ponytail”这个标题说起:它到底是什么第一次看到“ponytail”这个词,很多人脑子里蹦出来的画面是扎起来的马尾辫。但在技术圈和效率工具圈里,ponytail 早就不是发型的意思了。它是一类轻量级信息聚合与快捷操作工具的代称,…

2026/10/28 14:42:12

全国计算机二级C语言真题PDF高效刷题指南

简介:这份PDF是全国计算机二级C语言考试的试题与答案解析,专为备考二级C语言的考生准备。内容涵盖C语言特点与设计理念、程序基本组成单位、main函数执行流程、函数嵌套调用规则、标识符命名规范、整型实型字符型数据类型、八进制十六进制数合法形式、运…

2026/10/28 15:28:56

requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南

简介:一份以实战为导向的Python爬虫入门资源,面向具备基本编程基础、希望快速掌握网络数据抓取的初学者,可解决从零编写简单爬虫的常见困惑。实例以requests库发送HTTP请求、BeautifulSoup解析HTML文档,完整演示从网页中提取 标题…

2026/10/28 3:32:29

递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现

简介:这是一篇面向控制系统、信号处理与机器学习等领域学习者的最小二乘参数辨识程序说明文档。资源共包含一个docx格式文档,压缩包大小七十八KB,内容围绕递推最小二乘算法和渐消记忆最小二乘算法展开:先构造一个极点位于单位圆内…

2026/10/29 0:03:42

学生选课系统DFD图绘制指南:边界划分与分层校验实战

简介:文档以顶层与第一层DFD图为核心,完整刻画学生选课系统的逻辑模型,面向软件工程课程设计、系统分析学习及毕设前期建模人群。顶层图界定系统边界,外部实体包括管理员、教师和学生三类角色;第一层图进一步细化用户登…

2026/10/29 0:03:42

JIRA敏捷落地:Scrum角色权限、Sprint与燃尽图避坑指南

简介:围绕“基于JIRA的敏捷开发项目管理”这一主题,面向产品负责人、Scrum Master及研发测试成员,梳理Scrum角色分工、迭代流程与JIRA工具配置的对应关系,适合初、中级团队导入敏捷管理时参考。压缩包共1个docx文件,大…

2026/10/29 0:03:42

SEMI S8人机工程验收实战:从条款拆解到现场实测的完整指南

简介:面向半导体设备设计、制造与运维工程师及安全合规人员,这份资料聚焦SEMI标准体系下的设备安全规范,重点收录SEMI S8-0308《半导体制造设备人体工程学工程安全指南》。内容围绕设备设计原则、错误与事故预防、人体工程学适配三大主线展开…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑