python 使用多线程进行压力测试
#coding=utf-8
import urllib2
import threading
import time
TOTAL = 0 #总数
SUCC = 0 #响应成功数
FAIL = 0 #响应失败数
EXCEPT = 0 #响应异常数
MAXTIME=0 #最大响应时间
MINTIME=100 #最小响应时间,初始值为100秒
# 子类化Thread
class Mythread(threading.Thread):
def __init__(self, func, args, name=''):
threading.Thread.__init__(self)
self.name = name
self.func = func
self.args = args
def getResult(self):
return self.res
def run(self):
self.res = apply(self.func, self.args)
def request_url(url, r):
global TOTAL
global SUCC
global FAIL
global EXCEPT
try:
st = time.time()
res = urllib2.urlopen(url)
status = res.getcode()
if status == 200:
TOTAL+=1
SUCC+=1
else:
TOTAL+=1
FAIL+=1
time_span = time.time()-st
maxtime(time_span)
self.mintime(time_span)
except Exception, e:
TOTAL+=1
EXCEPT+=1
def maxtime(ts):
global MAXTIME
if ts>MAXTIME:
MAXTIME=ts
def mintime(ts):
global MINTIME
if ts<MINTIME:
MINTIME=ts
def main():
print '===========task start==========='
# 开始的时间
start_time = time.time()
# 并发的线程数
thread_count = 100
i = 0
while i <= thread_count:
t = Mythread(request_url, ("http://www.baidu.com", "x"))
t.start()
i += 1
t=0
#并发数所有都完成或大于20秒就结束
while TOTAL<thread_count|t>2:
print "total:%d,succ:%d,fail:%d,except:%d\n"%(TOTAL,SUCC,FAIL,EXCEPT)
t+=1
time.sleep(1)
print '===========task end==========='
print "total:%d,succ:%d,fail:%d,except:%d"%(TOTAL,SUCC,FAIL,EXCEPT)
print 'response maxtime:',MAXTIME
print 'response mintime',MINTIME
s = raw_input("Press any key")
print "bay!"
pass
if __name__ == "__main__":
main()
文章内容来源:
http://www.runoob.com/python/python-multithreading.html
python 使用多线程进行压力测试的更多相关文章
- 详细介绍windows下使用python pylot进行网站压力测试
windows下使用python进行网站压力测试,有两个必不可少的程序需要安装,一个是python,另一个是pylot.python是一个安装软件,用来运行python程序,而pylot则是pytho ...
- 【转】 详细介绍windows下使用python pylot进行网站压力测试
windows下使用python进行网站压力测试,有两个必不可少的程序需要安装,一个是python,另一个是pylot.python是一个安装软件,用来运行python程序,而pylot则是pytho ...
- Python Web 性能和压力测试 multi-mechanize
http://www.aikaiyuan.com/5318.html 对Web服务做Performance & Load测试,最常见的工具有Apache Benchmark俗称ab和商用工具L ...
- python 对mongodb进行压力测试
最近对mongoDB数据库进行性能分析,需要对数据库进行加压. 加压时,最初采用threading模块写了个多线程程序,测试的效果不理想. 单机读数据库每秒请求数只能达到1000次/s.而开发的jav ...
- Mongodb千万级数据在python下的综合压力测试及应用探讨
http://rfyiamcool.blog.51cto.com/1030776/1329351
- pylot网站压力测试
windows下使用python进行网站压力测试,有两个必不可少的程序需要安装,一个是python,另一个是pylot.python是一个 安装软 件,用来运行python程序,而pylot则是pyt ...
- pylot压力测试工具
博客搬家了,欢迎大家关注,https://bobjin.com 由于版本的兼容性问题,现在在windows下搭建pylot+matplotlib压力测试环境真的会令人吃尽苦头.这是因为,pylot从2 ...
- Python开发【笔记】:接口压力测试
接口压力测试脚本 1.单进程多线程模式 # #!/usr/bin/env python # # -*- coding:utf-8 -*- import time import logging impo ...
- python mysql数据库压力测试
python mysql数据库压力测试 pymysql 的执行时间对比 1,装饰器,计算插入1000条数据需要的时间 def timer(func): def decor(*args): start_ ...
随机推荐
- select into from 提示 Undeclared variable.....错误的解决办法 && select into from 和 insert into select 的用法和区别
然而今天在使用 SELECT INTO FROM 备份mysql数据表的时候,运行相关 sql 语句的时候却一直返回 [Err] 1327 - Undeclared variable: ...... ...
- w
w --help -f 开启或关闭显示用户从何处登入系统. -h 不显示各栏位的标题信息列. -l 使用详细格式列表,此为预设值. -s 使用简洁格式列表,不显示用户登入时间,终端机阶段作业和程序所耗 ...
- ***CI新增记录成功后的返回值判断,是用isset还是empty
Q: 新增记录插入成功后,加了一个return $this->db->insert_id(); $digg_id = $this->m_feed_digg->create(js ...
- ***PHP中empty()和isset()的区别
对于初学php的人来说,empty()和和isset()用法的区别是很难搞清楚的,他们的用法的差别不仔细去琢磨的话确实很难弄清楚. 先说一下他们的共同点: 都可以判定一个变量是否为空: 都返回bool ...
- CI框架获取post和get参数_CodeIgniter心得
请参考:CI文档的输入类部分: $this->input->post() $this->input->get() ------------------------------- ...
- iOS通过ASIHTTPRequest提交JSON数据
先验知识——什么是ASIHTTPRequest? 使用iOS SDK中的HTTP网络请求API,相当的复杂,调用很繁琐,ASIHTTPRequest就是一个对CFNetwork API进行了封装,并且 ...
- Maven跳过test打包
1. cd到当前目录 2. mvn install -Dmaven.test.skip=true 参考:http://blog.csdn.net/symgdwyh/article/details/ ...
- 电赛总结(四)——波形发生芯片总结之AD9854
一.特性参数 ·300M内部时钟频率 ·可进行频移键控(FSK),二元相移键控(BPSK),相移键控(PSK),脉冲调频(CHIRP),振幅调制(AM)操作 ·正交的双通道12位D/A转换器 ·超高速 ...
- javascript优化--01高质量编码
javascript的浮点数: Javascript的数字都是双精度浮点数: 64位编码数字: 能表达53位精度的整数: 进行位运算时会隐式地转化为32位整数(0,1序列)后计算: 浮点数运算可能会有 ...
- Xamarin.Android提示找不到mono.Android.Support.v4
Xamarin.Android提示找不到mono.Android.Support.v4 错误信息:Error: Exception while loading assemblies: System.I ...