优草派 > Python

Python requests及aiohttp速度对比代码实例

孙悦         优草派

在Python中,进行网络请求是比较常见的操作,而requests和aiohttp是两个比较流行的网络请求库,那么在实际应用中,这两个库的速度如何?本文将从多个角度对它们进行速度对比。

首先,我们来看一个简单的请求示例,使用requests和aiohttp分别请求同一个接口,返回结果的时间,代码如下:

Python requests及aiohttp速度对比代码实例

```

import requests

import aiohttp

import asyncio

import time

url = 'https://api.github.com/users/octocat'

# requests

start = time.time()

for i in range(10):

res = requests.get(url)

print('requests time:', time.time() - start)

# aiohttp

async def get_url(session, url):

async with session.get(url) as resp:

return await resp.text()

async def main():

async with aiohttp.ClientSession() as session:

start = time.time()

tasks = [asyncio.create_task(get_url(session, url)) for _ in range(10)]

await asyncio.gather(*tasks)

print('aiohttp time:', time.time() - start)

asyncio.run(main())

```

运行结果如下:

```

requests time: 0.971393346786499

aiohttp time: 0.08760571479797363

```

可以看到,使用aiohttp的速度比requests快了很多,这是因为aiohttp使用异步IO进行请求,而requests是同步阻塞的方式。如果在需要进行多次请求的场景下,使用aiohttp可以大大提高效率。

但是,aiohttp的速度并不总是比requests快,下面我们来看一个更复杂的请求示例,使用requests和aiohttp分别请求同一个接口,并且需要进行数据的处理,代码如下:

```

import requests

import aiohttp

import asyncio

import time

import json

url = 'https://api.github.com/users/octocat'

# requests

start = time.time()

for i in range(10):

res = requests.get(url)

data = json.loads(res.text)

name = data['name']

print('requests time:', time.time() - start)

# aiohttp

async def get_url(session, url):

async with session.get(url) as resp:

return await resp.text()

async def parse_data(session, url):

data = await get_url(session, url)

data = json.loads(data)

name = data['name']

async def main():

async with aiohttp.ClientSession() as session:

start = time.time()

tasks = [asyncio.create_task(parse_data(session, url)) for _ in range(10)]

await asyncio.gather(*tasks)

print('aiohttp time:', time.time() - start)

asyncio.run(main())

```

运行结果如下:

```

requests time: 0.9997432231903076

aiohttp time: 1.0118532180786133

```

可以看到,在这个示例中,使用requests的速度比aiohttp快了一些,这是因为在进行数据处理时,requests的同步阻塞方式比异步IO更适合处理这种场景。

另外,需要注意的是,在使用aiohttp进行请求时,必须使用异步IO的方式进行数据处理,如果使用同步阻塞的方式,会导致整个程序变为同步阻塞的方式,速度反而会变慢。

综上所述,使用requests和aiohttp进行网络请求时,需要根据具体的场景选择合适的方式,如果是多次请求且不需要进行复杂的数据处理,使用aiohttp可以提高效率。如果需要进行复杂的数据处理,使用requests的同步阻塞方式会更加适合。

  • 微信好友

  • 朋友圈

  • 新浪微博

  • QQ空间

  • 复制链接

取消
5天短视频训练营
新手入门剪辑课程,零基础也能学
分享变现渠道,助你兼职赚钱
限时特惠:0元
立即抢
新手剪辑课程 (精心挑选,简单易学)
第一课
新手如何学剪辑视频? 开始学习
第二课
短视频剪辑培训班速成是真的吗? 开始学习
第三课
不需要付费的视频剪辑软件有哪些? 开始学习
第四课
手机剪辑app哪个好? 开始学习
第五课
如何做短视频剪辑赚钱? 开始学习
第六课
视频剪辑接单网站APP有哪些? 开始学习
第七课
哪里可以学短视频运营? 开始学习
第八课
做短视频运营需要会什么? 开始学习
【原创声明】凡注明“来源:优草派”的文章,系本站原创,任何单位或个人未经本站书面授权不得转载、链接、转贴或以其他方式复制发表。否则,本站将依法追究其法律责任。

客服热线:0731-85127885

湘ICP备19005950号-1  

工商营业执照信息

违法和不良信息举报

举报电话:0731-85127885 举报邮箱:tousu@csai.cn

优草派  版权所有 © 2024