async/await模型
上一节使用asyncio提供的@asyncio.coroutine
把一个生成器标记成了coroutine类型,并在coroutine内部使用yield from
调用另一个coroutine实现异步操作。这个代码并不容易阅读,所以在Python 3.5引入了async/await语法。
接触过C#和Javascript ES7、Typescript的读者可能会对这个语法比较熟悉。在这些语言中,async/await是典型的异步操作语法。在Python中使用这个语法也很简单,下面用这个新语法来重新写一遍上面的示例。
async def hello():
print('hello world.')
r = await asyncio.sleep(1)
print('hello again')
示例中其余的代码可以保持不变。读者可以对比一下两段代码,是不是简洁了许多。