#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)

 

posted on 2019-07-14 20:50  人生苦短use,what?  阅读(205)  评论(0编辑  收藏  举报