首页 > 编程语言 > 详细

python的各种网络请求库 urllib3 requests aiohttp 分别请求http和https 的效率对比,多线程、gevent、asyncio对比,超大线程池、2n + 1 线程池对比

时间:2021-04-14 01:50:41      阅读:99      评论:0      收藏:0      [点我收藏+]

此文三个目的,不能光意淫概念误入歧途,有的人以为得概念一套一套的,其实并不是想的那样,实践对比才能出真知,要尊重实践。

 

此文使用各种网络请求库和各种并发模式和各种大小的线程池来测试请求50000次一个内容源码很小的百度静态页面,分别测试http和https

https://www.baidu.com/content-search.xml
http://www.baidu.com/content-search.xml

网页内容很小,(基本可以排除认为请求得慢,耍赖说是网速带宽差造成的)。

 

1.总结一下python的各种网络请求库的性能,包括urllib3 和requests和aiohttp

2.总结一下 多线程 asyncio gevent的 并发效率

3.4核cpu情况下对比200线程池并发数量和 9线程池(2 * 4  +1)并发效率。

 

 

测试截图如下,nb_log把print时间自动打印出来,方便控制台搜索每秒运行多少次,一定要import nb_log。

 

技术分享图片

 

 

 

 

 

测试方案1:

技术分享图片

 

 

 

urllib3 + ThreadPoolExecutor 200线程池 +请求连接池 + 请求 https

平均每秒请求完成 750次。

 

 

测试方案2

技术分享图片

requests + ThreadPoolExecutor 200线程池 +请求连接池 + 请求 https

 

 

平均每秒请求完成310次。

 

 

 

测试方案3

技术分享图片

 

 

 

urllib3 + gevent 200并发 + 连接池 + 请求https

平均每秒秒请求完成270次。

 

 

测试方案4

技术分享图片

 

 

urllib3 + 线程池 200并发 + 连接池 + 请求http (注意是http,不是https,https会执行更多的代码路径消耗更高的cpu)

平均每秒秒请求完成1300次。

 

 

测试方案5

技术分享图片

 

 

requests + 线程池 200并发 + 连接池 + 请求http (注意是http,不是https)

平均每秒秒请求完成330次。

 

测试方案6

技术分享图片

 

 

urllib3 + gevent 200并发 + 连接池 + 请求http (注意是http,不是https)

平均每秒秒请求完成580次。

 

 

测试方案7

技术分享图片

 

urllib3 + 线程池 200并发 + 不使用请求连接池 + 请求https (注意是https,不是http)

平均每秒秒请求完成580次。

 

 

测试方案8

技术分享图片

 

 

requests + 线程池 200并发 + 不使用请求连接池 + 请求https (注意是https,不是http)

平均每秒秒请求完成120次。

 

 

测试方案9

技术分享图片

 

 

aiohttp  + asyncio 200并发 + 使用请求连接池 + 请求https (注意是https,不是http)

平均每秒秒请求完成990次。

 

 

测试方案10

技术分享图片

 

 

aiohttp  + asyncio 200并发 + 使用请求连接池 + 请求http (注意是http,不是https)

平均每秒秒请求完成1080次。

 

 

测试方案11

技术分享图片

 

 

 

aiohttp  + asyncio 200并发 + 不使用请求连接池 + 请求http (注意不使用连接池)

平均每秒秒请求完成400次。

 

测试方案12

技术分享图片

 

 

aiohttp  + asyncio 200并发 + 不使用请求连接池 + 请求https (注意不使用连接池)

平均每秒秒请求完成170次。

 

 

综上所述, 请求http比https快很多

连接池比不使用连接池快很多。

gevent 比线程池慢。

urllib3 比requests快很多。

asyncio + aiohttp 比线程池 + urllib3快一丝丝。

 

python的各种网络请求库 urllib3 requests aiohttp 分别请求http和https 的效率对比,多线程、gevent、asyncio对比,超大线程池、2n + 1 线程池对比

原文:https://www.cnblogs.com/ydf0509/p/14655383.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!