外观
如何理解Python 异步、线程与进程?
标准回答
asyncio 通过协作式切换让任务在 I/O 等待时让出执行机会。把函数标记 async 不会把内部同步模型调用或 CPU 密集循环变成非阻塞;这类工作会占住事件循环,需要使用兼容异步接口或放到合适执行环境。
线程适合部分阻塞 I/O 与会释放解释器锁的库工作,进程可以提供更独立的 CPU 执行与故障隔离,但有数据传输和模型内存复制成本。Python 运行时存在不同构建和版本行为,不能把所有部署都概括为线程永远无法利用多核。
模型 Processor 还受到 GPU 显存、批次、加载时间和供应方速率限制。并发数按真正瓶颈限制,取消和超时要传到实际调用。一个 await 超时不一定代表底层线程或模型计算已经停止。
追问与回答
为什么 Worker 加倍吞吐没变
可能共享同一 GPU、连接池或速率上限,甚至产生更多模型副本和显存压力;检查利用率、队列和批处理情况。
怎样避免任务结果异常丢失
对创建的任务建立明确等待或异常收集路径,将失败映射到持久任务状态,避免后台异常只留在日志。
易混淆点
- 把 asyncio 当成 CPU 密集计算的自动加速器。
参考资料
内容来源
- Android 与 AI 工程 Wiki · 原条目
q190