天天看点

IO并发.1 asyncio执行多个requests请求

#-*- coding:utf-8 -*-
# asyncio是Python 3.4版本引入的标准库,直接内置了对异步IO的支持。
# asyncio的编程模型就是一个消息循环。我们从asyncio模块中直接获取一个EventLoop的引用,
# 然后把需要执行的协程扔到EventLoop中执行,就实现了异步IO。

#本例:同时下载多个百度词典
import asyncio
import dict_down #调用:https://blog.csdn.net/meizhen51/article/details/79861796

#声明这是并发函数
@asyncio.coroutine
def _get_dict(key):
    content=dict_down.get_dict(key)
    print(content)

#同时下载多个词典
def get_dict_more(keys=[]):
    if len(keys) == 0:
        return
    loop = asyncio.get_event_loop()
    tasks=[]
    for key in keys:
        tasks.append(_get_dict(key))#添加任务
    loop.run_until_complete(asyncio.wait(tasks))
    loop.close()

if __name__ == '__main__':
    get_dict_more(keys=['逸周书','国语','战国策','穆天子传','竹书纪年','世本'])