Skip to content
阅读进度

如何理解Python 异步、线程与进程? ​

返回 架构与 SDK 目录

标准回答 ​

asyncio 通过协作式切换让任务在 I/O 等待时让出执行机会。把函数标记 async 不会把内部同步模型调用或 CPU 密集循环变成非阻塞;这类工作会占住事件循环,需要使用兼容异步接口或放到合适执行环境。

线程适合部分阻塞 I/O 与会释放解释器锁的库工作,进程可以提供更独立的 CPU 执行与故障隔离,但有数据传输和模型内存复制成本。Python 运行时存在不同构建和版本行为,不能把所有部署都概括为线程永远无法利用多核。

模型 Processor 还受到 GPU 显存、批次、加载时间和供应方速率限制。并发数按真正瓶颈限制,取消和超时要传到实际调用。一个 await 超时不一定代表底层线程或模型计算已经停止。

追问与回答 ​

为什么 Worker 加倍吞吐没变 ​

可能共享同一 GPU、连接池或速率上限,甚至产生更多模型副本和显存压力;检查利用率、队列和批处理情况。

怎样避免任务结果异常丢失 ​

对创建的任务建立明确等待或异常收集路径,将失败映射到持久任务状态,避免后台异常只留在日志。

易混淆点 ​

  • 把 asyncio 当成 CPU 密集计算的自动加速器。

参考资料 ​

内容来源 ​

用完整回答理解机制,用真实证据解释项目。