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

Python异步asyncio是否属并行?await执行机制相关技术疑问

关于asyncio纯计算异步函数的任务切换问题

先看你提供的代码:

async def task():
    async def func():
            '''takes forever to run the calculation, not doing requests'''

            return something
    result = await func()

问题解答

  1. function1是否会在后台运行?
    否,它不会在后台运行。

  2. 关于单线程并发的后续疑问
    你提到的“即便function1被‘暂停’,事件循环管理器仍会返回继续运行它(进行计算),检查计算是否完成”的说法是错误的。

Python的asyncio是单线程并发模型,事件循环能切换任务的关键在于当前任务主动让出CPU控制权——只有当任务遇到IO等待(比如网络请求、文件读写)或者调用asyncio.sleep()这类会触发切换的操作时,事件循环才会暂停当前任务,去执行其他就绪的任务。

但你的func是纯计算任务,没有任何能让事件循环挂起的操作。哪怕用了await,这个await也不会触发任务切换——事件循环会一直占用线程执行func的计算逻辑,直到它算出结果返回,期间完全不会处理其他任务(比如task2的function2)。只有等这个计算彻底完成后,事件循环才会去处理队列里的其他任务。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 05:39:51