🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
### 简介 用`asyncio`提供的@asyncio.coroutine可以把一个generator标记为coroutine类型,然后在coroutine内部用yield from调用另一个coroutine实现异步操作。 为了简化并更好地标识异步IO,从`Python 3.5`开始引入了新的语法`async`和`await`,可以让coroutine的代码更简洁易读。 ### 使用注意 请注意,`async`和`await`是针对coroutine的新语法,要使用新的语法,只需要做两步简单的替换: - 把@asyncio.coroutine替换为async; - 把yield from替换为await。 让我们对比一下上一节的代码: ~~~ @asyncio.coroutine def hello(): print("Hello world!") r = yield from asyncio.sleep(1) print("Hello again!") ~~~ 用新语法重新编写如下: ~~~ async def hello(): print("Hello world!") r = await asyncio.sleep(1) print("Hello again!") ~~~ 剩下的代码保持不变。 ### 小结 - Python从3.5版本开始为asyncio提供了async和await的新语法; - 注意新语法只能用在Python 3.5以及后续版本,如果使用3.4版本,则仍需使用上一节的方案。 ### 练习 将上一节的异步获取sina、sohu和163的网站首页源码用新语法重写并运行。