await-Python


await 是 Python 中异步编程的关键字,通常与 async 搭配使用,用于等待一个异步操作完成。它的作用是让你在非阻塞的情况下等待某个操作,比如 I/O 操作(如网络请求、文件读写等)完成,而不会阻塞整个程序的执行。

主要作用:

  1. 异步等待await 会暂停当前协程的执行,直到被等待的异步操作完成,期间其他协程可以继续执行,这样就能提高程序的效率,尤其是在 I/O 密集型的场景中。

  2. 非阻塞 I/O:在传统的同步编程中,如果某个操作需要等待(如数据库查询、网络请求等),它会阻塞后续操作。而在异步编程中,await 可以让你等待一个异步操作完成,但不会阻塞其他任务,程序可以继续执行其他代码。

示例:

import asyncio

async def fetch_data():
    print("开始获取数据...")
    await asyncio.sleep(2)  # 模拟异步操作
    print("数据获取完成!")
    return "数据"

async def main():
    print("任务开始")
    result = await fetch_data()  # 使用 await 等待异步操作
    print("获取的结果:", result)

# 运行异步主函数
asyncio.run(main())

解释:

  1. fetch_data 是一个异步函数,它内部有一个 await asyncio.sleep(2),这个操作会暂停 2 秒钟,但不会阻塞其他任务。
  2. main 函数等待 fetch_data 完成,使用 await 来暂停 main 的执行,直到 fetch_data 完成并返回结果。

注意事项:

  • await 只能在 async 定义的函数内部使用。
  • await 只能等待返回 awaitable 对象的操作,这些对象包括协程(coroutine)和其他异步操作(比如 asyncio.sleepasyncio.gather 等)。

通过这种方式,Python 可以更高效地处理并发任务,尤其是在需要等待外部资源的情况下(例如网络请求)。