2024-05-20 03:43:12 发布
网友
在性能方面,请求库与PyCurl相比如何
我的理解是,请求是urllib的python包装,而PyCurl是libcurl的python包装,它是本机的,因此PyCurl应该获得更好的性能,但不确定性能如何
我找不到任何比较基准
似乎有一个新的孩子在这个街区:-pycurl的请求接口
谢谢你的基准-很好-我喜欢curl,它似乎比http做得更多
https://github.com/dcoles/pycurl-requests
I wrote you a full benchmark,使用gUnicorn/meinheld+nginx(用于性能和HTTPS)支持的小型Flask应用程序,查看完成10000个请求需要多长时间。测试在AWS中对一对卸载的c4.1大型实例运行,服务器实例没有CPU限制
TL;DR summary:如果你在做大量的网络工作,请使用PyCurl,否则请使用requests。PyCurl完成小请求的速度是请求的2-3倍,直到您遇到大请求的带宽限制(这里约为520 MBit或65 MB/s),并且使用的CPU功率减少了3到10倍。这些数字比较了连接池行为相同的情况;默认情况下,PyCurl使用连接池和DNS缓存,而请求不使用连接池和DNS缓存,因此一个简单的实现的速度将是原来的10倍
注意,由于涉及数量级,双对数图仅用于下图
Full results are in the link,以及基准方法和系统配置
注意事项:尽管我努力确保以科学的方式收集结果,但它只测试一种系统类型和一种操作系统,以及有限的性能子集,尤其是HTTPS选项
首先也是最重要的是,requests构建在^{} library之上,根本不使用stdliburllib或urllib2库
requests
urllib
urllib2
在性能上比较requests和pycurl没有什么意义pycurl可能使用C代码进行工作,但与所有网络编程一样,您的执行速度在很大程度上取决于将机器与目标服务器分离的网络。此外,目标服务器的响应速度可能较慢
pycurl
最后,requests有一个更友好的API可以使用,您会发现使用这个更友好的API会更有效率
似乎有一个新的孩子在这个街区:-pycurl的请求接口
谢谢你的基准-很好-我喜欢curl,它似乎比http做得更多
https://github.com/dcoles/pycurl-requests
I wrote you a full benchmark,使用gUnicorn/meinheld+nginx(用于性能和HTTPS)支持的小型Flask应用程序,查看完成10000个请求需要多长时间。测试在AWS中对一对卸载的c4.1大型实例运行,服务器实例没有CPU限制
TL;DR summary:如果你在做大量的网络工作,请使用PyCurl,否则请使用requests。PyCurl完成小请求的速度是请求的2-3倍,直到您遇到大请求的带宽限制(这里约为520 MBit或65 MB/s),并且使用的CPU功率减少了3到10倍。这些数字比较了连接池行为相同的情况;默认情况下,PyCurl使用连接池和DNS缓存,而请求不使用连接池和DNS缓存,因此一个简单的实现的速度将是原来的10倍
注意,由于涉及数量级,双对数图仅用于下图
Full results are in the link,以及基准方法和系统配置
注意事项:尽管我努力确保以科学的方式收集结果,但它只测试一种系统类型和一种操作系统,以及有限的性能子集,尤其是HTTPS选项
首先也是最重要的是,} library 之上,根本不使用stdlib
requests
构建在^{urllib
或urllib2
库在性能上比较
requests
和pycurl
没有什么意义pycurl
可能使用C代码进行工作,但与所有网络编程一样,您的执行速度在很大程度上取决于将机器与目标服务器分离的网络。此外,目标服务器的响应速度可能较慢最后,
requests
有一个更友好的API可以使用,您会发现使用这个更友好的API会更有效率相关问题 更多 >
编程相关推荐