Python requests与aiohttp异步性能实测对比
本文通过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秒以内,从而失去对比意义。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













