await
是 Python 中异步编程的关键字,通常与 async
搭配使用,用于等待一个异步操作完成。它的作用是让你在非阻塞的情况下等待某个操作,比如 I/O 操作(如网络请求、文件读写等)完成,而不会阻塞整个程序的执行。
主要作用:
-
异步等待:
await
会暂停当前协程的执行,直到被等待的异步操作完成,期间其他协程可以继续执行,这样就能提高程序的效率,尤其是在 I/O 密集型的场景中。 -
非阻塞 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())
解释:
fetch_data
是一个异步函数,它内部有一个await asyncio.sleep(2)
,这个操作会暂停 2 秒钟,但不会阻塞其他任务。main
函数等待fetch_data
完成,使用await
来暂停main
的执行,直到fetch_data
完成并返回结果。
注意事项:
await
只能在async
定义的函数内部使用。await
只能等待返回awaitable
对象的操作,这些对象包括协程(coroutine)和其他异步操作(比如asyncio.sleep
、asyncio.gather
等)。
通过这种方式,Python 可以更高效地处理并发任务,尤其是在需要等待外部资源的情况下(例如网络请求)。