Python 进程与线程的选择
Python 中什么时候选择多线程(threading),什么时候选择多进程(multiprocessing)?各自有什么优缺点?
回答
苦行僧
多线程(threading):
- 适用:I/O 密集型(网络请求、文件读写、数据库查询)
- 优点:共享内存、轻量级、创建开销小
- 缺点:GIL 限制 CPU 密集型任务
多进程(multiprocessing):
- 适用:CPU 密集型(计算、图像处理、科学计算)
- 优点:绕过 GIL,利用多核 CPU
- 缺点:独立内存、IPC 通信复杂、创建开销大
# 多线程
from threading import Thread
Thread(target=io_task).start()
# 多进程
from multiprocessing import Process, Pool
with Pool(4) as p:
p.map(cpu_task, data)
第三种选择:asyncio 协程,适合 I/O 密集型且比线程更轻量。