最近在做一个性能测试,主要是http协议的,
开始想到用C的线程,在后来的试验中发现,C开发多线程还是比较麻烦的,
后来,想到了python,因为是http下载,curl的libcurl
def run(self):
real_uri=self.get_real_url()
if not real_uri:
return False
try:
try:
curl = pycurl.Curl()
curl.setopt(pycurl.URL, real_uri)
curl.setopt(pycurl.WRITEDATA, self.ofile)
curl.setopt(pycurl.NOPROGRESS, 0)
curl.setopt(pycurl.PROGRESSFUNCTION, self.progress)
#self.curl.setopt(pycurl.WRITEFUNCTION, counter)
curl.setopt(pycurl.FOLLOWLOCATION, 1)
curl.setopt(pycurl.MAXREDIRS, 5)
curl.setopt(pycurl.OPT_FILETIME, 1)
curl.setopt(pycurl.USERAGENT, "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; InfoPath.2)")
#curl.setopt(pycurl.CONNECTTIMEOUT, 60)
#curl.setopt(pycurl.TIMEOUT, 300)
curl.setopt(pycurl.NOSIGNAL, 1)
curl.perform()
finally:
curl.close()
except Exception, e:
print "self.curl.perform() Exception : %s"%e
#if int(e[0]) == 28:
# print "This connection timeout [3000s], %s"%e
return True
实际测试,可以开到2000线程,内存仅仅使用了121M,2G的网卡跑满,感觉很强大
当然,由于这个测试只是取到平均下载速度,不需要实际下载到数据,故可以直接将下载到的数据>/dev/null 这样就可以避免I/O的瓶颈,
libcurl 刚好有一个回调函数,输出当前总下载的数据量
curl.setopt(pycurl.PROGRESSFUNCTION, self.progress)
分享到:
相关推荐
《pycurl-7.43.0.3-cp37-cp37m-win32.whl:Python中的Curl库详解》 在Python的世界里,数据的获取与传输是一项至关重要的任务,pycurl正是为此而生的一个库。本文将深入探讨pycurl及其在Windows平台上针对Python ...
《Python中的PyCurl库与Pyspider框架:安装与使用详解》 在Python的开发环境中,有时候我们需要处理HTTP和HTTPS请求,这时PyCurl库就显得尤为重要。PyCurl是一个Python接口,用于libcurl,一个强大的URL传输库。在...
在这个压缩包中,我们有两个不同版本的`pycurl`安装文件:`pycurl-7.43.0.3-cp27-cp27m-win_amd64.whl`和`pycurl-7.43.0.3-cp27-cp27m-win32.whl`。这两个文件分别对应于64位和32位的Windows系统。在选择合适的版本...
安装pyspider之前需要安装lxml 和 pycurl ,但是在安装pycurl的过程中遇到了同样的错误 解决方案是安装wheel 和到 http://www.lfd.uci.edu/~gohlke/pythonlibs/#pycurl 这个网址下载相应版本的pycurl ,如果是64...
标题提及的是"Python库 | pycurl-7.43.0.5-cp35-cp35m-win_amd64.whl",这是一个特定版本的Python库——pycurl,版本号为7.43.0.5,适配于Python 3.5(cp35)且为32位(cp35m)的Windows AMD64架构。描述进一步确认...
在IT行业中,网络爬虫是数据获取的重要工具,而`pycurl`、`pyspider`和`PhantomJS`都是在这个领域中扮演关键角色的库或工具。接下来,我们将详细探讨这三个组件以及它们如何协同工作。 1. **pycurl**: `pycurl`是...
**PyCurl for Python 2.7:网络数据传输库** PyCurl是Python编程语言的一个强大库,它为Python提供了libcurl库的功能。libcurl是一个用于处理URLs的跨平台库,支持多种协议,包括HTTP、HTTPS、FTP、FTPS等。在...
`pycurl`的核心功能包括: 1. **HTTP方法支持**:`GET`、`POST`、`PUT`、`DELETE`等,可以方便地执行HTTP请求并获取响应数据。 2. **URL处理**:能够解析和构建URL,支持URL编码和解码。 3. **数据传输**:可以...
【Pycurl简介】 Pycurl是一个Python绑定库,它为Python程序员提供了强大的网络访问功能。Pycurl基于libcurl库,一个用C语言编写的跨平台库,用于处理多种互联网协议,包括HTTP、FTP、TFTP等。Pycurl因其高效、稳定...
pycurl 基于curl 官方只出版了32位版本 在http://www.lfd.uci.edu/~gohlke/pythonlibs/#pycurl中有非官方的64位版本
pycurl-7.43.1-cp37-cp37m-win_amd64 PycURL。 PycURL is a Python interface to libcurl. PycURL can be used to fetch objects identified by a URL from a Python program, similar to the urllib Python module....
本教程将专注于一个基于Python的网络爬虫框架,该框架利用了`pycurl`和`multicurl`库来提高爬取效率。`pycurl`是一个Python接口,用于libcurl,一个强大的URL传输库,而`multicurl`则是在`pycurl`基础上构建的多线程...
64位windows pycurl安装包,可以直接按照后使用!已经在多台服务器上验证过!
《Python的CURL库:PyCurl深度解析》 PyCurl是Python中一个非常重要的库,它提供了对libcurl的接口,使Python程序能够处理各种网络协议,如HTTP、HTTPS、FTP、FTPS等。libcurl是一个强大的URL传输库,而PyCurl则将...
《Python网络库pycurl-SSL 7.19.0 for Win32与Python 2.7详解》 在Python编程中,pycurl是一个非常重要的库,它提供了对libcurl库的接口,使Python程序员能够方便地进行HTTP、HTTPS、FTP等协议的网络数据传输。...
然而,有时候在安装或使用`pyspider`的过程中,可能会遇到一些依赖问题,比如标题中提到的`pycurl`缺失。`pycurl`是Python的一个库,它提供了对libcurl库的接口,用于处理URL,支持多种协议,如HTTP、HTTPS、FTP等,...
《Python库pycurl的安装与使用详解》 pycurl是一个Python接口,用于处理libcurl,一个广泛使用的HTTP客户端库。这个“pycurl-7.20.1-bin-win32-py26.zip”文件是专为Windows 32位系统和Python 2.6版本设计的安装包...
PycURL(Windows7/Win32)Python2.7安装包 Pypycurl-7.19.0.win32-py2.7 PycURL is a interface to the libcurl library.
pycurl-7.43.0.2 Windows64位安装包,Windows安装pycurl,支持python版本3.6