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

Python中如何执行异步函数且无需等待返回结果

如何在Python异步函数中不等待子任务完成继续执行?

你的问题出在代码里的await async_task——这行代码会强制main函数等待func任务执行完毕才继续往下走,所以才会出现main finished在func finished之后输出的情况。

要实现“启动子任务后直接继续运行main,不等待子任务返回”,只需要移除await async_task这一行即可。asyncio.create_task()(你代码里的asyncio.get_event_loop().create_task()在Python3.7+可以替换成这个更简洁的写法)会把func任务加入事件循环后台运行,不需要等待它完成。

修改后的代码如下:

import asyncio
import datetime

async def func(delay):
    print('func started ' + datetime.datetime.now().strftime('%H:%M:%S'))
    await asyncio.sleep(delay)
    print('func finished ' + datetime.datetime.now().strftime('%H:%M:%S'))

async def main():
    print('main started ' + datetime.datetime.now().strftime('%H:%M:%S'))
    # 创建后台任务,不等待完成
    asyncio.create_task(func(3))
    print('main finished ' + datetime.datetime.now().strftime('%H:%M:%S'))

asyncio.run(main())

对应的运行输出:

>>> main started 13:37:21
>>> main finished 13:37:21
>>> func started 13:37:21
>>> func finished 13:37:24

注意:如果main函数执行完毕后,整个事件循环会结束,此时后台的func任务可能还没执行完就被终止。如果需要确保func能完整执行,可以在main的最后添加一段等待时间(比如await asyncio.sleep(4)),或者用任务集合来追踪所有后台任务并等待它们完成(根据你的实际需求选择)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 03:05:03