Python并发架构演化核心是高效利用I/O等待时间:同步阻塞受限于线程/进程资源;多线程/多进程绕过GIL但扩展性差;asyncio通过事件循环实现单线程高并发;混合架构兼顾现实场景的异步主干与同步隔离。
Python并发架构的演化,核心是围绕“如何更高效地利用I/O等待时间”展开。由于CPython的GIL限制,多线程无法真正并行计算,但I/O密集型场景下,通过让出控制权、复用单线程资源,反而能支撑高并发——这是整个演化的出发点。
传统requ
ests.get()或time.sleep()会卡住整个线程,一个请求没返回,后续任务只能干等。适合脚本、低QPS工具,但无法应对数百并发连接。
用threading处理I/O等待,用multiprocessing跑CPU密集任务。虽能提升吞吐,但模型仍是“一个任务配一个执行单元”,扩展性有限。
用事件循环调度协程,遇到I/O自动挂起、就绪后恢复,把“等待时间”变成“处理其他请求的时间”。典型代表是aiohttp、fastapi底层。
纯异步难覆盖全部场景(如调用某些C扩展、遗留同步SDK),于是出现“异步主干+同步隔离”的混合模式。
不复杂但容易忽略:选型不是越新越好,而是看瓶颈在哪。I/O多?上asyncio。CPU重?上multiprocessing。混合负载?分层拆解,各司其职。