#python为了将语义变得更加明确,就引入了async和await关键词用于定义原生的协程 async def downloader(url): return "ok" async def download_url(url): #dosomethings html = await downloader(url) return html if __name__ == "__main__": coro = download_url("http://www.idesk.com") coro.send(None)
原生的协程调用需要使用send方法,对比yield的方法可以把await当成yield from
注意:
①在async中不可再去定义yield,await必须在async中实现
②await后面必须是awaitable对象
③使用可以在前面加async或者加一个装饰器
@types.coroutine def downloader(url): yield "ok" async def download_url(url): #dosomethings html = await downloader(url) return html if __name__ == "__main__": coro = download_url("http://www.idesk.com") coro.send(None)