#coding: utf-8
import pycurl
import StringIO
import urllib2
def f(url):
c = pycurl.Curl()
c.setopt(pycurl.URL, url)
b = StringIO.StringIO()
c.setopt(pycurl.WRITEFUNCTION, b.write)
c.setopt(pycurl.FOLLOWLOCATION, 1)
c.setopt(pycurl.MAXREDIRS, 5)
c.perform()
return b.getvalue()
def l(url):
return urllib2.urlopen(url).read()
def t(func):
import time
n = time.time()
for i in xrange(10000):
func('http://10.20.187.231/')
return time.time() - n
print 'pycurl', t(f)
print 'urllib2', t(l)
最简单的测试: 一个for循环; 使用一个内网IP,减少网络问题。
结果输出 :
pycurl 9.5188128948 urllib2 15.1496920586
最主要是cpu占用问题。pycurl时,占cpu只有urllib2的 1/3= 20% : 60% , 差别还是比较大!
pycurl网络接收速度是 urllib2的两倍。
pycurl文档:
http://pycurl.sourceforge.net/doc/pycurl.html