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

Python异步函数使用误区:如何实现函数无需等待并行执行?

问题解析与修改方案

错误原因

  1. asyncio.run(main()) 是阻塞调用:它会持续运行直到 main() 函数内所有异步操作完成,后续的 do_something() 只能在这之后执行。
  2. main() 内的 await task 直接阻塞流程:创建异步任务后立刻等待其完成,导致整个异步任务执行期间,没有机会运行 do_something()。

修改方案

将 do_something() 的调用移到 main() 函数内部、创建异步任务之后、等待任务完成之前。这样 do_something() 会在异步任务启动后立即执行,无需等待异步任务结束。

修改后的完整代码:

import os
import asyncio
from datetime import datetime

async def do_some_iterations():
    for i in range(10):
        print(datetime.now().time())
        await asyncio.sleep(1)
    print('... Cool!')

async def main():
    task = asyncio.create_task(do_some_iterations())
    # 立即执行同步函数,无需等待异步任务
    do_something()
    # 等待异步任务完成(如果不需要等待异步任务结束,可删除此行)
    await task

def do_something():
    print('something...')

if __name__ == "__main__":
    asyncio.run(main())

预期输出

修改后 do_something() 的输出会优先出现在异步任务的时间打印之前,示例输出如下:

something...
00:50:12.345678
00:50:13.346789
00:50:14.347890
...
... Cool!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 07:15:35