Python相关

异步,协程

2020-06-02  本文已影响0人  低音旋律

异步请求百度示例:

import time
import asyncio
from aiohttp import ClientSession
from aiohttp import TCPConnector
import urllib3

urllib3.disable_warnings()
tasks = []
url = "http://www.baidu.com"


async def request(url):
    async with ClientSession(connector=TCPConnector(ssl=False)) as session:  # ssl关闭ssl证书验证
        async with session.get(url) as response:
            text = await response.text()
            status = response.status
            return {"status": status, "text": text}


def run():
    for i in range(100):  # 循环添加100个任务到任务中
        task = asyncio.ensure_future(request(url.format(i)))
        tasks.append(task)

    loop = asyncio.get_event_loop()
    result = loop.run_until_complete(asyncio.gather(*tasks))  # 执行事件循环,并接收执行结果
    return result


if __name__ == '__main__':
    t = time.time()
    ret = run()
    print(ret)
    print("耗时:", round(time.time() - t, 4), "秒")
上一篇 下一篇

猜你喜欢

热点阅读