python await语句_【转载】对python async与await的理解
时间: 2023-07-06 08:10:44 浏览: 117
Python协程的实现原理及相关技术.docx
async/await 是 Python 3.5 引入的新语法,用于异步编程。它们的引入使得异步代码的编写更加简单和易读。
async 定义一个协程(coroutine),它可以在运行过程中挂起并等待另一个协程的执行结果,类似于 JavaScript 中的 async/await。
await 则是等待一个异步操作的结果,这个异步操作可以是一个协程、一个 Future 对象或者其他可等待对象。在等待过程中,当前协程会被挂起,并让出 CPU,直到异步操作完成并返回结果。在 Python 3.5 之前的版本中,可以使用 yield from 来实现类似的功能,但是语法相对于 async/await 比较繁琐。
下面是一个简单的例子:
```python
import asyncio
async def foo():
print('start foo')
await asyncio.sleep(1) # 等待 1 秒钟,模拟一个 IO 操作
print('end foo')
async def bar():
print('start bar')
await asyncio.sleep(2) # 等待 2 秒钟,模拟一个 IO 操作
print('end bar')
async def main():
print('start main')
await asyncio.gather(foo(), bar()) # 并发执行 foo 和 bar
print('end main')
asyncio.run(main())
```
这个例子中,我们定义了三个协程 foo、bar 和 main,其中 foo 和 bar 分别模拟了一个 IO 操作,而 main 则并发执行了 foo 和 bar,并等待它们的结果。输出结果如下:
```
start main
start foo
start bar
end foo
end bar
end main
```
可以看到,main 协程会等待 foo 和 bar 协程的执行结果,但是在等待的过程中不会阻塞,而是让出 CPU 给其他协程执行。这样,整个程序的执行效率就得到了提升。
阅读全文