美文网首页
aiohttp并发请求和普通requests对比

aiohttp并发请求和普通requests对比

作者: 朝朝朝朝朝落 | 来源:发表于2021-05-06 14:05 被阅读0次

一, 使用普通请求


for i in range(10):
    url=f'https://www.baidu.com/s?wd=Python%20%E4%B8%8D%E7%94%A8import%20%E7%9B%B4%E6%8E%A5&pn={i}0'
    task = requests.get(url)
    print('当前时间:%s' % time.time())

结果

当前时间:1620280819.033647
当前时间:1620280819.2272892
当前时间:1620280819.633594
当前时间:1620280819.795841
当前时间:1620280819.954043
当前时间:1620280820.1537778
当前时间:1620280820.314548
当前时间:1620280820.473996
当前时间:1620280820.6532211
当前时间:1620280820.814378

整体运行时间约1.78s

二, 使用aiohttp

import time
import asyncio
from aiohttp import ClientSession

tasks = []
async def h(url):
    async with ClientSession() as session:#给所有的请求,创建同一个session
        async with session.get(url) as response:
#            print(response)
            print('当前时间:%s' % time.time())
            return await response.read()

def run():
    for i in range(10):
        url=f'https://www.baidu.com/s?wd=Python%20%E4%B8%8D%E7%94%A8import%20%E7%9B%B4%E6%8E%A5&pn={i}0'
        task = asyncio.ensure_future(h(url))
        tasks.append(task)
    result = loop.run_until_complete(asyncio.gather(*tasks))
 
if __name__ == '__main__':
    loop = asyncio.get_event_loop()
    run()

结果

当前时间d:1620281040.7897348
当前时间d:1620281040.79268
当前时间d:1620281040.795146
当前时间d:1620281040.797033
当前时间d:1620281040.800425
当前时间d:1620281040.803301
当前时间d:1620281040.809391
当前时间d:1620281040.812534
当前时间d:1620281040.820011
当前时间d:1620281040.8339899

整体运行时间约0.044s

目测快了40多倍

相关文章

网友评论

      本文标题:aiohttp并发请求和普通requests对比

      本文链接:https://www.haomeiwen.com/subject/fjcddltx.html