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

Python asyncio.create_task内存泄漏问题:这段代码是否存在问题?

问题解答

你代码里的这种情况不会导致内存泄漏,原因如下:

  • 当asyncio.run(main())执行时,main函数返回后,事件循环并不会立刻退出——它会继续运行所有已通过asyncio.create_task创建的后台任务,直到这些任务全部完成。也就是说,你创建的task_2虽然没被await,但它还是会执行完func(2)的逻辑,之后相关的任务对象和资源会被自动回收。
  • 只有在长期运行的事件循环场景(比如持续运行的异步服务器)中,反复创建任务却从不await也不主动取消,且这些任务本身持有大量资源或长期处于运行状态时,才会逐渐累积内存导致泄漏。你的代码里事件循环会在所有任务完成后正常退出,不存在这个问题。

如果你想避免task_2执行不必要的逻辑(比如节省系统资源),可以在return前主动取消它:

async def main():
    task_1 = asyncio.create_task(func(1))
    task_2 = asyncio.create_task(func(2))

    res_1 = await task_1
    if res_1 == 1:
        task_2.cancel()  # 取消未使用的任务
        return
    res_2 = await task_2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 16:24:46