python等待异步返回的结果

python等待异步返回的结果

作者:Elara发布时间:2026-03-28 20:48阅读时长:15 分钟阅读次数:6
常见问答
Q
如何在Python中等待异步函数的执行结果?

我在使用Python的异步编程时,如何能够等待一个异步函数执行完毕并获取它的返回值?

A

使用await关键字等待异步函数结果

在Python的异步编程中,可以使用async和await关键字。定义异步函数时使用async修饰,调用异步函数时通过await关键字等待它完成并获取返回值。例如:

import asyncio

async def fetch_data():
    await asyncio.sleep(1)
    return '数据'

async def main():
    result = await fetch_data()
    print(result)

asyncio.run(main())

这样,main函数会暂停直到fetch_data执行完成并返回结果。

Q
Python异步任务如何同步获取结果?

我想在程序中启动多个异步任务,怎么等待所有任务完成后再处理它们的结果?

A

使用asyncio.gather同时等待多个异步任务

通过asyncio.gather函数,能够同时运行多个异步函数并收集它们的返回值。例如:

import asyncio

async def task(n):
    await asyncio.sleep(n)
    return n

async def main():
    results = await asyncio.gather(task(1), task(2), task(3))
    print(results)

asyncio.run(main())

gather会等待所有任务完成,并返回所有任务的结果列表。

Q
如何在非异步环境中等待异步函数返回?

我当前的代码不是异步的,如何调用并等待异步函数得到结果?

A

利用asyncio.run或者事件循环运行异步函数

在同步代码中,可以使用asyncio.run来执行异步函数并等待其结果。例如:

import asyncio

async def async_function():
    await asyncio.sleep(1)
    return '结果'

result = asyncio.run(async_function())
print(result)

如果不使用asyncio.run,也可以获取事件循环,调用loop.run_until_complete来执行异步函数。