一、进程(Process)
- 定义:进程是操作系统分配资源(如内存、CPU)的最小单位。每个进程拥有独立的地址空间、文件描述符和系统资源,彼此隔离。
- 核心特点:资源独立、高开销(内核态切换)、高稳定性(崩溃不影响其他进程)。
- 使用场景:CPU 密集型任务、需高隔离性的任务。
二、线程(Thread)
- 定义:线程是 CPU 调度的最小单位,属于进程内的执行单元。同一进程的线程共享进程资源(内存、文件句柄),但拥有独立的栈和寄存器。
- 核心特点:资源共享、中开销、稳定性风险(崩溃可能整个进程终止)。
- 使用场景:I/O 密集型任务,需利用多核并行计算的场景。
三、协程(Coroutine)
- 定义:协程是用户态的轻量级线程,由程序自身调度,不依赖操作系统内核。一个线程可承载数万个协程。
- 核心特点:极低开销、协作式调度、无需锁风险(单线程内协程串行执行)。
- 适用场景:高并发 I/O 密集型任务(如 Web 服务器、爬虫),异步编程(如asyncio)。
四、关系图
markdown
复制代码
进程(独立内存)
├─ 线程1(共享进程资源)
│ ├─ 协程A → 顺序执行
│ └─ 协程B → 顺序执行
├─ 线程2(共享进程资源)
│ ├─ 协程C → 顺序执行
└─ ...