You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FastAPI异步接口并行请求耗时偏高及CPU密集型任务扩展问题咨询

问题解答

额外耗时来源确认

你的判断是对的,额外耗时确实是异步拉取数据后CPU密集型任务串行执行导致的。
Python异步框架的事件循环运行在单线程上,使用异步数据库连接时,10个请求的数据库IO操作可以并发执行,这部分总耗时仅需约1秒就能全部完成。但拉取数据后的CPU密集型运算必须在事件循环的单线程中按顺序执行,10个任务每个耗时0.5秒,累计计算耗时就是5秒,和你实测的总耗时完全匹配。你预期的1.5秒需要IO和CPU任务都完全并行才能实现,单进程异步架构下CPU任务无法并行,自然达不到预期值。

多worker扩展有效性说明

增加Uvicorn的worker进程数确实可以扩展CPU bound部分的处理能力。每个worker进程会运行独立的事件循环,且拥有独立的GIL锁,在多核CPU环境下,不同worker的CPU计算任务可以真正并行执行。例如你在4核CPU上将worker数设置为4,10个请求的计算任务会分散到4个进程并行处理,计算部分总耗时可降低到1.5秒左右,整体请求总耗时即可接近你预期的1.5秒。
如果暂时不方便调整worker数量,也可以选择将CPU bound的运算任务提交到concurrent.futures.ProcessPoolExecutor中执行,避免阻塞事件循环,同样可以实现单worker下CPU任务的并行处理。

内容的提问来源于stack exchange,提问作者sambal shikhar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 06:09:03