Python requests与aiohttp异步性能实测对比

许南星
许南星
发布时间:2026-10-14 | 2人浏览过
原创

本文通过CentOS 7环境下Python 3.6的实测数据,对比了同步库requests与异步库aiohttp访问百度的耗时。结果显示aiohttp耗时约10.7秒,requests约12.4秒,验证了异步框架的速度提升。文章附带完整测试代码,并特别提示使用requests时避免复用session导致缓存干扰测试结果。

测试环境与配置

测试环境配置为CentOS 7系统,Python版本为3.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对象。因为从第二次请求开始,读取的将是缓存数据,这会导致无论抓取50次还是100次,总耗时都会异常地缩短至1秒以内,从而失去对比意义。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表