发布时间:2026/9/3 14:58:37
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/9/3 14:58:37

竖屏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/9/3 14:58:37

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

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

2026/9/3 14:58:37

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

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

2026/9/3 15:08:41

从Hyper DBZ贝吉塔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/3 15:08:41

光计算技术:从原理到挑战,解析全光计算机的现状与未来

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

2026/9/3 15:08:41

从tokenizer到后训练:中文NLP词表构建与数据清洗实战

NLP 圈有一个经常被跳过的基础问题:你的文本到底是怎么被切成一串数字喂给模型的?中文 NLP 项目在前期最容易出问题的也是这个环节。字符切、词语切、子词切,三种策略得到的结果完全不同,而后续的 post training(后训练…

2026/9/3 15:08:41

空调省电真相:从APF能效到实际电费,如何科学选购与使用

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

2026/9/3 15:08:41

如何判断输入内容与技术教程是否匹配?文本分类实战解析

抱歉,当前输入的项目标题是艺人巡演类信息,与“CSDN 技术教程/开发实战”的内容方向不匹配,因此我无法基于它生成一篇技术博文。 如果你有技术类选题(例如 Spring Security 实战、Oracle 索引优化、Python 异常排查、Apollo 配置…

2026/9/3 15:03:41

中点箝位型三电平逆变器Simulink仿真建模与SVPWM调制实现

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

2026/9/1 16:02:17

vSound小提琴数字处理器实操指南:从接线到演出的完整配置

电小提琴或者原声小提琴插电演出,第一个绕不开的坎就是声音难听。原声琴的共鸣和空气感一旦进了拾音器,出来的往往是一坨干瘪、发尖、带着奇怪塑料味的信号。我当初第一次把琴接上乐队调音台,直接被主唱吐槽"你这声音像在锯钢丝"。…

2026/9/3 14:29:47

传感器接口IC如何攻克生物化学传感的微弱信号难题?

1. 从电极到比特流:为什么生物化学传感必须依赖专用接口IC 做生物化学传感的人都有过类似的经历:明明传感器本身性能很好,信号输出却一塌糊涂——噪声大、漂移明显、重复性差,怎么调都达不到预期。很多时候问题并不在传感器&#…

2026/9/3 14:30:35

STM32F411CEU6多通道ADC采集:扫描模式+DMA实现详解

1. 多通道 ADC 的用武之地把“Multichannel ADC”和“STM32F411CEU6”这两个关键字放在一起,其实就是嵌入式开发里最常遇到的一类需求:用一块不算贵的 MCU,同时采集多路模拟信号。STM32F411CEU6 是 48 引脚的 Cortex-M4F 主控,主频…

2026/9/3 0:02:06

零基础装 OpenClaw 小龙虾 AI:Windows 一键部署教程与避坑要点

Windows 部署 OpenClaw 完整教程|本地 AI 智能体 5 分钟落地,环境配置一次搞定 版本说明:Windows 3.1.0 / Mac 2.7.9 写在前面 近两年开源 AI 领域有一款被称作「数字员工」的工具持续走热,它就是 OpenClaw,圈内人更习…

2026/9/3 0:02:06

Hermes Agent 本地部署新方案:Windows 整合包减少依赖报错

Windows 本地部署 Hermes 太麻烦?这版一键包 5 分钟快速跑通 很多人想体验 Hermes Agent,但真正开始部署时,往往会卡在环境配置这一步。 需要安装各类依赖、调试运行环境、处理路径问题,还容易遇到命令行报错、系统拦截、文件缺…

2026/9/3 0:02:06

实测 OpenClaw 一键包,5 分钟完成本地自动化环境搭建

OpenClaw 本地 AI 自动化工具部署指南|使用一键包规避环境配置难题 痛点:部署 AI 自动化工具常常要处理 Python、Node.js 各类依赖,版本冲突、环境配置耗费大量时间,OpenClaw 提供一键安装包,降低部署门槛。 适配系统&…

2026/9/2 1:15:22

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/2 1:15:22

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/2 1:15:20

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…