Python实现的HTTP并发测试完整示例


Posted in Python onApril 23, 2020

可修改变量thread_count指定最大的并发数量,即线程的数量。

完成之后,打印输出失败的次数,以及开始时间和结束时间,单位是毫秒。

主要是学习一下Python,仅供参考。

#!/usr/bin/python3

import sys, time, json, _thread
import http.client, urllib.parse

thread_count = 100  #并发数量
now_count = 0
error_count = 0
begin_time = ''

lock_obj = _thread.allocate()

def test_http_engine():
  global now_count
  global error_count
  global thread_count
  global begin_time
  conn = None
  if now_count == 0:
    begin_time = int(round(time.time() * 1000))
  try:
    conn = http.client.HTTPConnection("192.168.1.1", 80)
    conn.request('GET', '/')

    response = conn.getresponse()
    data = response.read()
    print (data)

    if json.dumps(response.status) != '200':
      error_count += 1;
      print ('error count: ' + str(error_count))

    sys.stdout.flush()
    now_count += 1
    if now_count == thread_count:
      print ('### error count: ' + str(error_count) + ' ###')
      print ('### begin time : ' + str(begin_time))
      print ('### end time  : ' + str(int(round(time.time() * 1000))))

  except Exception as e:
    print (e)
  finally:
    if conn:
      conn.close()

def test_thread_func():
  global now_count
  global lock_obj
  cnt = 0

  lock_obj.acquire()
  print ('')
  print ('=== Request: ' + str(now_count) + ' ===')

  cnt += 1
  test_http_engine()
  sys.stdout.flush()
  lock_obj.release()


def test_main():
  global thread_count
  for i in range(thread_count):
    _thread.start_new_thread(test_thread_func, ())

if __name__=='__main__':
  test_main()
  while True:
    time.sleep(5)
Python 相关文章推荐
python实现linux服务器批量修改密码并生成execl
Apr 22 Python
Python实现读取目录所有文件的文件名并保存到txt文件代码
Nov 22 Python
Python实现的选择排序算法原理与用法实例分析
Nov 22 Python
Python设计模式之MVC模式简单示例
Jan 10 Python
python中subprocess批量执行linux命令
Apr 27 Python
在Mac下使用python实现简单的目录树展示方法
Nov 01 Python
详解Python爬取并下载《电影天堂》3千多部电影
Apr 26 Python
Python生成一个迭代器的实操方法
Jun 18 Python
python3安装crypto出错及解决方法
Jul 30 Python
jupyter notebook实现显示行号
Apr 13 Python
OpenCV-Python实现轮廓拟合
Jun 08 Python
Python中rapidjson参数校验实现
Jul 25 Python
安装dbus-python的简要教程
May 05 #Python
使用SAE部署Python运行环境的教程
May 05 #Python
在Python中使用PIL模块对图片进行高斯模糊处理的教程
May 05 #Python
在Python中使用mechanize模块模拟浏览器功能
May 05 #Python
python实现自动更换ip的方法
May 05 #Python
浅谈MySQL中的触发器
May 05 #Python
python去除所有html标签的方法
May 05 #Python
You might like
php面向对象全攻略 (三)特殊的引用“$this”的使用
2009/09/30 PHP
PHP 图片水印类代码
2012/08/27 PHP
浅谈PHP正则表达式中修饰符/i, /is, /s, /isU
2014/10/21 PHP
降低PHP Redis内存占用
2017/03/23 PHP
PHP加MySQL消息队列深入理解
2021/02/27 PHP
javascript 面向对象全新理练之原型继承
2009/12/03 Javascript
JavaScript Memoization 让函数也有记忆功能
2011/10/27 Javascript
jQuery避免$符和其他JS库冲突的方法对比
2014/02/20 Javascript
实例讲解JQuery中this和$(this)区别
2014/12/08 Javascript
jQuery中appendTo()方法用法实例
2015/01/08 Javascript
详解nodejs 文本操作模块-fs模块(五)
2016/12/23 NodeJs
使用UrlConnection实现后台模拟http请求的简单实例
2017/01/04 Javascript
JavaScript实现重力下落与弹性效果的方法分析
2017/12/20 Javascript
JS实现头条新闻的经典轮播图效果示例
2019/01/30 Javascript
Vue.js中的组件系统
2019/05/30 Javascript
深入解析Python中的变量和赋值运算符
2015/10/12 Python
python将每个单词按空格分开并保存到文件中
2018/03/19 Python
python 处理dataframe中的时间字段方法
2018/04/10 Python
通过Python模块filecmp 对文件比较的实现方法
2018/06/29 Python
Python使用numpy产生正态分布随机数的向量或矩阵操作示例
2018/08/22 Python
python3学生名片管理v2.0版
2018/11/29 Python
python分块读取大数据,避免内存不足的方法
2018/12/10 Python
Opencv实现抠图背景图替换功能
2019/05/21 Python
详解python编译器和解释器的区别
2019/06/24 Python
pandas DataFrame创建方法的方式
2019/08/02 Python
浅谈pytorch卷积核大小的设置对全连接神经元的影响
2020/01/10 Python
解决python3.x安装numpy成功但import出错的问题
2020/11/17 Python
几个CSS3的flex弹性盒模型布局的简单例子演示
2016/05/12 HTML / CSS
html5文本内容_动力节点Java学院整理
2017/07/11 HTML / CSS
处理textarea中的换行和空格
2019/12/12 HTML / CSS
美国知名平价彩妆品牌:e.l.f. Cosmetics
2017/11/20 全球购物
工商管理本科生求职信
2014/07/13 职场文书
网络销售员岗位职责
2015/04/11 职场文书
论文评审意见
2015/06/05 职场文书
运动会加油稿
2015/07/22 职场文书
php+laravel 扫码二维码签到功能
2021/05/15 PHP