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

时间: 2024-12-28 15:27:46

python 使用多线程进行压力测试的相关文章

【转】 详细介绍windows下使用python pylot进行网站压力测试

windows下使用python进行网站压力测试,有两个必不可少的程序需要安装,一个是python,另一个是pylot.python是一个安装软件,用来运行python程序,而pylot则是python的一个功能插件,作用是进行网站压力测试.本文将介绍在windows下如何使用python pylot进行网站压力测试. 一.安装python 如果你已经成功安装了python,那么可以忽略这步.否则,请首先正确安装python,确保能运行正常.可以看看这里,windows安装python详细教程

python 对mongodb进行压力测试

最近对mongoDB数据库进行性能分析,需要对数据库进行加压. 加压时,最初采用threading模块写了个多线程程序,测试的效果不理想. 单机读数据库每秒请求数只能达到1000次/s.而开发的java程序请求数能达到6000-7000次/s. 证明受限于GIL,python的多线程表现确实不理想. 后来,采用了multiprocessing模块,采用多进程的方式进行加压. 经过测试证明,multiprocessing的性能还是不错,和开发java程序的性能相当. 脚本如下: #!/usr/bi

Python Web 性能和压力测试 multi-mechanize

http://www.aikaiyuan.com/5318.html 对Web服务做Performance & Load测试,最常见的工具有Apache Benchmark俗称ab和商用工具LoadRunner.ab简单直接,功能也相对较弱,但我们经常看到的对一些Web server或者Framework的性能测试用的ab做的,而LoadRunner功能也确实很强大,各种大型软件公司.软件外包企业几乎是必备了,用起来很High,当然其价格也确实很High 这里要介绍的multi-mechaniz

pylot压力测试工具

由于版本的兼容性问题,现在在windows下搭建pylot+matplotlib压力测试环境真的会令人吃尽苦头.这是因为,pylot从2009年后就不再更新了,而跟pylot搭配的软件python.numpy和matplotlib还在不断更新着,导致pylot不再兼容新版本的python.numpy和matplotlib,而老版本的跟pylot兼容的python.numpy和matplotlib又不容易找到. 昨晚捣鼓了很久,我终于找齐了这四个极品软件,在xp里能顺利安装使用.这里与大家分享下.

pylot网站压力测试

windows下使用python进行网站压力测试,有两个必不可少的程序需要安装,一个是python,另一个是pylot.python是一个安装软 件,用来运行python程序,而pylot则是python的一个功能插件,作用是进行网站压力测试.本文将介绍在windows下如何使用 python pylot进行网站压力测试. 一.安装python 如果你已经成功安装了python,那么可以忽略这步.否则,请首先正确安装python,确保能运行正常.可以看看这里,windows安装python详细教

python学习 —— 多线程发送请求测试服务器压力

以前写过的python多线程终于派上用场了,其实还没开始测试,但下周会使用这个脚本测试一下,虽然boss让我用C++来做: # coding=utf-8 import random import string import threading import time from requests import post class MultiThread(threading.Thread): def __init__(self, url, qlock): threading.Thread.__in

python对web服务器做压力测试并做出图形直观显示

压力测试有很多工具啊.apache的,还有jmeter, 还有loadrunner,都比较常用. 其实你自己用python写的,也足够用. 压力测试过程中要统计时间. 比如每秒的并发数,每秒的最大响应时间, 最小响应时间, 平均响应时间.最后再统一所有的请求完成后的上术参数. 将这些参数输出成CSV格式的文件. 如果不知道什么是CSV就是指将数据用引号包起来,中间用逗号分开,一系统数据放一行. 有了这个CSV文件,你用EXCEL打开来做图就可以. 如果你熟练,可以使用gnuplot这个命令行工具

python的web压力测试工具-pylot安装使用

http://blog.csdn.net/chenggong2dm/article/details/10106517 pylot是python编写的一款web压力测试工具.使用比较简单.而且测试结果相对稳定. 这里不得不鄙视一下apache 的ab测试,那结果真是让人蛋疼,同样的url,测试结果飘忽不定,看得人心惊肉跳,摸不着头脑.   下载 pylot官网:www.pylot.org/ 下载地址: http://www.pylot.org/download.html 最新的版本为pylot_1

python学习笔记(threading性能压力测试)

又是新的一周 延续上周的进度 关于多进程的学习 今天实践下 初步设计的接口性能压力测试代码如下: 1 #!/usr/bin/env python 2 # -*- coding: utf_8 -*- 3 4 import threading 5 import requests 6 import time 7 import re 8 from time import sleep 9 10 # -------接口性能测试配置------- 11 method = "post" 12 # 接口