并发编程知识体系概览
为什么要学并发编程
Python 的并发编程是面试中的高频考点,尤其是 GIL。理解不同并发模型的适用场景,是写出高性能 Python 程序的关键。
核心知识体系
并发模型对比
| 模型 | 适用场景 | 并行性 | 内存 | GIL 影响 |
|---|---|---|---|---|
| 多线程 | IO 密集型 | 并发(非并行) | 共享 | ✅ 受限 |
| 多进程 | CPU 密集型 | 真并行 | 独立 | ❌ 不受 |
| asyncio | 高并发 IO | 并发(单线程) | 共享 | ❌ 不受 |
| concurrent.futures | 通用封装 | 取决于 Executor | - | - |
选择建议
- IO 密集型(网络请求、文件读写)→
asyncio或多线程 - CPU 密集型(计算、数据处理)→ 多进程
- 混合型 → 多进程 + 每个进程内 asyncio
知识点关联
| 文档 | 核心内容 | 面试重要度 |
|---|---|---|
| GIL 全局解释器锁 | GIL 原理、影响、绕过方案 | ⭐⭐⭐⭐⭐ |
| 多线程 | threading、锁、线程池 | ⭐⭐⭐⭐ |
| 多进程 | multiprocessing、IPC、共享内存 | ⭐⭐⭐⭐ |
| asyncio 协程 | async/await、事件循环、Task | ⭐⭐⭐⭐⭐ |
| 协程进阶 | aiohttp、异步上下文、异步生成器 | ⭐⭐⭐ |
| concurrent.futures | 线程池、进程池、Future | ⭐⭐⭐ |