python requests与aiohttp 速度对比

Posted 陈严肃

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python requests与aiohttp 速度对比相关的知识,希望对你有一定的参考价值。

环境:centos7 python3.6

测试网址:www.bai.com

测试方式:抓取百度100次

 

结果:

aio: 10.702147483825684s
requests: 12.404678583145142s

异步框架的速度还是有显著提升的。

 

下面贡献代码:

import aiohttp
import time
import requests
import asyncio


def test_requests():
    """ 测试requessts请求百度100次时间 """

    start = time.time()
    url = "https://www.baidu.com"
    for i in range(100):
        requests.get(url)
    end = time.time()
    print("requests:")
    print( end - start )
        

async def aio_download(url):
    """  aiohttp 下载 """

    async with aiohttp.ClientSession() as session:
        await session.get(url)


async def test_aio():
    """ 测试aiohtpp请求百度100次时间 """
    url = "https://www.baidu.com"
    start = time.time()
    for i in range(100):
        await aio_download(url)
    end = time.time()
    print("aio: ")
    print( end - start )


if __name__ == "__main__":

    loop = asyncio.get_event_loop()
    loop.run_until_complete(test_aio())

    test_requests()

 

————————————————————————————————————————

-—————————————————————————————————————————

小贴士:

requests不要使用session进行反复抓取一个网站的测试,因为从第2次开始,读取的就是缓存了,无论抓取50次还是100次或是更多,总时间都是1s以内。

 


以上是关于python requests与aiohttp 速度对比的主要内容,如果未能解决你的问题,请参考以下文章

aiohttp 异步http请求-12.aiohttp 请求生命周期(和requests库有什么不一样?)

为 aiohttp 爬虫注入灵魂

aiohttp高并发爬虫框架

python asyncio 异步 I/O - 实现并发http请求(asyncio + aiohttp)

python aiohttp进入现有的事件循环

Python网络异步爬虫(aiohttp库)