Python 并发编程:threading、multiprocessing、asyncio 完整对比

小飞兽 Python 5 次阅读 2026-07-24

Python并发有三个武器:threading线程、multiprocessing进程、asyncio协程。选对方案能让程序快10倍不止。

threading:I/O密集型

threading.Thread创建线程,start()启动,join()等待完成。适用于网络请求、文件读写等I/O密集型任务。I/O等待时会释放GIL,所以不受GIL限制。

multiprocessing:CPU密集型

multiprocessing.Pool创建进程池,pool.map()并行执行任务。每个进程有独立的GIL,真正利用多核CPU。适合图像处理、数值计算等CPU密集型任务。

asyncio:协程

async def定义协程函数,asyncio.gather()并发执行。适合高并发网络请求(数千个并发连接),内存占用远低于线程。

GIL 影响

全局解释器锁使Python同一时刻只能有一个线程执行字节码。CPU密集型任务受GIL限制(用multiprocessing),I/O密集型任务不受影响(I/O时自动释放GIL)。

运行效果

5个网络请求:threading并发总耗时约5秒(顺序执行需要15秒)。CPU密集计算:multiprocessing 4进程并行比单进程快近4倍。

常见问题

Q1: 什么时候用multiprocessing?CPU密集型任务(图像处理、数值计算)用multiprocessing可以真正利用多核。

Q2: asyncio和threading怎么选?高并发网络请求用asyncio,简单快速原型用threading。

延伸阅读

  • Python异步编程
  • Python线程安全
  • Python多进程通信

---

作者:小马 | 绍大技术网 shaoda.net