Python
基础语法
01概念
02安装
03变量
04字符串
05数
06常量与注释
07列表
08元组
09if语句
10字典
11集合
12复合数据类型对比
13推导式
14用户输入
15while循环
16函数
17类
18面向对象编程
19文件操作
20异常处理
21日期和时间
22魔术方法
23内置函数
24线程
25并发&并行
26正则表达式
27迭代器
28装饰器
29生成器
30上下文管理器
31函数式编程
32闭包
33解包
34工具库
35连接关系型数据库
36虚拟环境
37异步编程
网络爬虫
01urllib库[了解]
02requests库
03数据交换格式
04解析库
05lxml
06Beautiful Soup
07Xpath语法
08动态网页的处理
-
+
首页
25并发&并行
并发(Concurrency)与并行(Parallelism)是计算机科学中描述 “多任务处理” 的两个核心概念,二者均涉及 “多个任务的推进”,但在**执行本质**、**依赖条件**和**适用场景**上存在根本区别。理解二者的差异,是设计高效多任务系统的基础。 ## 并发(Concurrency) **定义**:指在**同一时间段内**,多个任务通过 “交替执行” 的方式推进,宏观上表现为 “同时进行”,但微观上(某一时刻)可能只有一个任务在执行。 **本质**:通过 “任务切换” 模拟并行,解决 “多个任务需要被及时响应” 的问题,不依赖硬件多核,单核 CPU 即可实现。 **直观比喻**:一个厨师同时处理 “炒菜” 和 “煮汤”—— 先炒 30 秒菜,再去搅 30 秒汤,循环交替,宏观上两个任务同时在推进,但某一时刻厨师只在做一件事。 ## 并行(Parallelism) **定义**:指在**同一时刻**,多个任务在**不同的硬件核心**上**真正同时执行**,微观上(某一时刻)有多个任务在推进。 **本质**:依赖多核 CPU 或分布式硬件,通过 “资源并行分配” 实现真正的同时处理,提升计算效率。 **直观比喻**:两个厨师分别同时炒菜和煮汤,某一时刻两人各自在执行任务,不存在切换,是物理上的同时进行。 ## 核心差异对比表 | 维度 | 并发(Concurrency) | 并行(Parallelism) | | ------------ | ---------------------------------------- | -------------------------------------- | | **微观执行** | 某一时刻只有一个任务执行(通过切换实现) | 某一时刻多个任务同时执行(多核并行) | | **硬件依赖** | 可在单核 CPU 上实现 | 必须依赖多核 CPU 或多处理器 | | **核心目标** | 提高任务响应效率(避免某一任务阻塞整体) | 提高计算吞吐量(同时处理更多任务) | | **实现关键** | 任务调度与上下文切换(如时间片轮转) | 任务拆分与多核资源分配 | | **典型场景** | IO 密集型任务(如网络请求、文件读写) | CPU 密集型任务(如数据计算、图像处理) | ## 适用场景 **并发的典型场景:IO 密集型任务** IO 密集型任务的核心瓶颈是 “等待外部响应”(如网络传输、磁盘读写),而非 CPU 计算,此时并发可通过切换任务提高 CPU 利用率。 例 1:Web 服务器处理多用户请求 - 单个用户请求可能包含 “数据库查询”(IO 阻塞)、“文件读取”(IO 阻塞)等操作,若单线程处理,CPU 会因等待 IO 而空闲。 - 并发解决方案:用多线程 / 协程处理请求 —— 当一个请求等待 IO 时,切换到另一个就绪请求,让 CPU 始终忙碌(如 Nginx 的事件驱动模型)。 例 2:Python 多线程处理爬虫任务 - 爬虫的核心操作是 “发送网络请求”(IO 阻塞),此时线程会释放 GIL,其他线程可继续执行,通过并发提高爬取效率(尽管 GIL 限制了 CPU 并行,但不影响 IO 等待时的任务切换)。 **并行的典型场景:CPU 密集型任务** CPU 密集型任务的核心瓶颈是 “计算速度”(如数学运算、数据建模),此时并行可通过多核同时计算提升效率。 例 1:科学计算中的数据分片处理 - 对 100 万条数据进行统计分析,可拆分为 10 个 10 万条的子任务,分配到 10 核 CPU 上并行计算,总耗时约为单核心的 1/10(理想情况)。 例 2:图像渲染 - 渲染一张高清图片时,可按区域拆分任务(如左上、右上、左下、右下),分配到 4 核 CPU 并行渲染,缩短总耗时。
毛林
2025年9月7日 11:45
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
PDF文档(打印)
分享
链接
类型
密码
更新密码