gevent 写的bench URL 的小工具
2015-08-25 11:02
519 查看
#!/usr/bin/pythonimport geventfrom gevent import monkeymonkey.patch_all()import urllib2import timeimport sysimport mathclass Result:def __init__(self):self.totalCnt = 0self.successCnt = 0self.failureCnt = 0self.timers = []# An HTTPRedirectHandler to disable redirects.class NoRedirectHandler(urllib2.HTTPRedirectHandler):def http_error_307(self, req, fp, code, msg, hdrs):return Nonedef download(cnt, result, url):for i in xrange(cnt):startTime = time.time()try:res = urllib2.urlopen(url)data = res.read()#print datares.close()result.timers.append(time.time() - startTime)result.successCnt += 1except urllib2.HTTPError as e:if e.code == 307:result.timers.append(time.time() - startTime)result.successCnt += 1else:print >> sys.stderr, eexcept Exception as e:print >> sys.stderr, eresult.failureCnt += 1finally:result.totalCnt += 1opener = urllib2.build_opener(NoRedirectHandler())urllib2.install_opener(opener)result = Result()concur = int(sys.argv[1])cnt = int(sys.argv[2])if len(sys.argv) >= 4:url = sys.argv[3]else:url = "https://proxy.uswest.tmicss.com/auth?forward=http%3A%2F%2Fwww.cnn.com%2F"cookie = { "Cookie": "abc=853fbf9dbb439f08b250fbac43084a43bbc506ea0f27dac0613fe54a850527cf" }req = urllib2.Request(url, headers=cookie)#req = urllib2.Request(url)startTime = time.time()jobs = [ gevent.spawn(download, cnt, result, req) for i in xrange(concur) ]gevent.joinall(jobs)stopTime = time.time()print "%d successful of %d requests in %0.3f seconds" % (result.successCnt, result.totalCnt, stopTime - startTime)avg = math.fsum(result.timers) / len(result.timers)print "average time per request: %0.3f seconds" % avgstddev = math.fsum(map(lambda x: (x - avg) * (x - avg), result.timers))stddev = math.pow(stddev / len(result.timers), 0.5)print "std dev: %0.3f" % stddevsortedTimers = sorted(result.timers)print "median: %0.3f seconds" % (sortedTimers[len(sortedTimers)/2])#print sortedTimers
相关文章推荐
- Python动态类型的学习---引用的理解
- Python3写爬虫(四)多线程实现数据爬取
- 垃圾邮件过滤器 python简单实现
- 下载并遍历 names.txt 文件,输出长度最长的回文人名。
- install and upgrade scrapy
- Scrapy的架构介绍
- Centos6 编译安装Python
- 使用Python生成Excel格式的图片
- 让Python文件也可以当bat文件运行
- [Python]推算数独
- Python中zip()函数用法举例
- Python中map()函数浅析
- Python将excel导入到mysql中
- Python在CAM软件Genesis2000中的应用
- 使用Shiboken为C++和Qt库创建Python绑定
- FREEBASIC 编译可被python调用的dll函数示例
- Python 七步捉虫法