
前言在 Python 并发编程中进程、线程、协程是三大核心概念也是面试高频考点。很多开发者只会用多线程/多进程但始终搞不懂三者的底层层级、调度机制、适用场景。本文从底层原理、层级关系、调度方式、优缺点、适用场景、面试区别全方位梳理零基础也能彻底看懂适合收藏复习、面试背诵、CSDN 发文。一、核心一句话总览进程操作系统资源分配的最小单位独立内存、隔离性强、开销最大、支持多核并行。线程操作系统 CPU 调度的最小单位依附进程、共享资源、开销中等、IO 场景并发。协程用户态轻量级任务运行在线程内部、无系统开销、超高并发、仅 IO 密集场景适用。层级关系进程 线程 协程 一个进程包含多个线程一个线程可以承载海量协程。二、三大概念详细解析1. 进程Process进程是操作系统资源分配的最小单位是独立运行的程序实体。核心特性每个进程拥有独立的内存空间进程之间完全隔离、互不干扰。进程的创建、销毁、切换开销极大需要操作系统内核介入。支持多核 CPU 真正并行可以充分利用服务器多核算力。进程间无法直接共享数据通信复杂管道、队列、Socket 等 IPC 方式。适用场景CPU 密集型任务大数据计算、模型训练、图像处理、加密解密等大量运算场景。2. 线程Thread线程是操作系统CPU 调度执行的最小单位线程寄生在进程内部是进程的最小执行分支。核心特性同进程内的所有线程共享进程内存、全局变量、文件资源数据共享简单。线程切换开销远小于进程但仍需要操作系统内核调度有一定性能损耗。Python 特有 GIL 锁限制同一时刻一个进程内只有 1 个线程执行 CPU 代码。多线程共享变量存在线程安全问题需要手动加锁保证数据一致性。适用场景普通 IO 密集型任务文件读写、少量爬虫、接口请求、数据库查询等阻塞等待场景。3. 层级关系一个进程至少有 1 条主线程。一条线程可以跑无数个协程。协程不能脱离线程独立存在。4. 协程Coroutine协程是用户态实现的轻量级并发任务操作系统完全感知不到协程的存在仅运行在单线程内部。核心特性调度由代码主动控制yield / await非操作系统强制切换切换开销几乎为 0。单线程可承载数万/数十万协程并发量级远超线程、进程。无线程竞争问题同一时刻只有一个协程执行无需加锁。无法利用多核 CPU仅单线程内并发。适用场景高并发 IO 密集型任务海量爬虫、异步 Web 服务、高并发接口、大量网络请求。三、并发与并行核心难点详解1. 并发Concurrent多个任务交替执行宏观同时运行微观串行交替无需多核支持。代表多线程、协程。2. 并行Parallel多个任务真正同时执行必须依赖多核 CPU 硬件支持。代表多进程。Python 专属结论CPU 密集多线程无效GIL 锁限制必须用多进程实现并行提速。IO 密集多线程、协程均可并发协程性能、并发量级最优。四、进程、线程、协程全方位对比表对比维度进程线程协程调度者操作系统内核操作系统内核用户程序/事件循环资源隔离完全独立互不共享共享进程资源共享线程资源切换开销极大中等极小几乎无开销多核利用✅ 支持真正并行❌ Python GIL 限制❌ 不支持多核数据共享困难需 IPC 通信简单需加锁防竞争简单无竞争问题并发数量几十几百几千数万几十万最优场景CPU 密集计算普通 IO 密集高并发 IO 密集五、底层渊源yield 生成器与协程的关系很多初学者疑惑学协程为什么要先学 yield 生成器因为协程的核心底层能力函数暂停、保存状态、恢复执行最早就是由yield实现的。1. 生成器基础侧重产出数据通过 next() 逐个取值惰性迭代、一次性消费。2. 老式协程yield 实现侧重任务通信、切换通过 send() 接收外部数据实现函数主动暂停与恢复是早期协程的雏形。3. 现代协程async/awaitPython3.5 全新语法脱离 yield专门用于异步 IO 并发是目前企业开发主流写法。六、Python GIL 锁核心原理面试必考GIL全局解释器锁保证同一时刻一个 Python 进程内只有一个线程执行字节码。CPU 密集任务线程持续占用 GIL无法切换多线程完全无法提速。IO 密集任务线程阻塞等待 IO 时会释放 GIL其他线程可执行多线程可正常并发提速。多进程每个进程有独立 GIL可完美利用多核 CPU。七、场景选型终极指南直接照抄使用大量计算、CPU 打满→ 用多进程普通文件/接口 IO、开发简单→ 用多线程海量请求、高并发爬虫、异步服务→ 用协程async/await极致性能→多进程 协程多核 高并发双优势八、高频面试问答背诵版Q1协程和线程的区别线程是操作系统调度开销大、抢占式切换协程是用户态调度开销极小、协作式切换单线程超高并发无线程安全竞争问题。Q2多线程为什么不能利用多核Python GIL 全局锁限制同一时刻单个进程只有一个线程执行 CPU 代码无法实现多核并行。Q3协程有什么缺点无法利用多核 CPU属于协作式调度单个协程死循环/阻塞不释放 CPU会卡死整个线程所有协程。Q4三者的层级关系进程包含线程线程包含协程进程是资源容器线程是系统执行单元协程是用户态轻量级任务。九、总结1.进程重资源、高隔离、多核并行、适配 CPU 密集。2.线程中等开销、共享资源、适配普通 IO 密集。3.协程超轻量、高并发、无锁竞争、适配高并发 IO 密集。掌握三者的底层区别和场景选型是 Python 并发编程的核心也是后端、爬虫、大数据岗位的必备面试知识点。