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实现简单QQ单用户机器人的方法
Jul 03 Python
Python3 处理JSON的实例详解
Oct 29 Python
Python scikit-learn 做线性回归的示例代码
Nov 01 Python
python如何以表格形式打印输出的方法示例
Jun 21 Python
Python调用C语言的实现
Jul 26 Python
Python占用的内存优化教程
Jul 28 Python
Python数据可视化 pyecharts实现各种统计图表过程详解
Aug 15 Python
Python多线程及其基本使用方法实例分析
Oct 29 Python
Python集合基本概念与相关操作实例分析
Oct 30 Python
在python中修改.properties文件的操作
Apr 08 Python
python爬虫请求头设置代码
Jul 28 Python
python中的class_static的@classmethod的巧妙用法
Jun 22 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
mysql5写入和读出乱码解决
2006/11/25 PHP
简单采集了yahoo的一些数据
2007/02/14 PHP
php自定义函数call_user_func和call_user_func_array详解
2011/07/14 PHP
PHP中空字符串介绍0、null、empty和false之间的关系
2012/09/25 PHP
PHP 验证登陆类分享
2015/03/13 PHP
php生成图片验证码-附五种验证码
2015/08/19 PHP
PHP中header用法小结
2016/05/23 PHP
javascript之更有效率的字符串替换
2008/08/02 Javascript
jquery 选择器引擎sizzle浅析
2013/02/06 Javascript
Jquery操作下拉框(DropDownList)实现取值赋值
2013/08/13 Javascript
IE与FireFox的JavaScript兼容问题解决办法
2013/12/31 Javascript
javascript计时器事件使用详解
2014/01/07 Javascript
JavaScript中的异常捕捉介绍
2014/12/31 Javascript
jQuery判断一个元素是否可见的方法
2015/06/05 Javascript
JavaScript自定义浏览器滚动条兼容IE、 火狐和chrome
2017/01/05 Javascript
js实现微博发布小功能
2017/01/12 Javascript
使用jQuery实现动态添加小广告
2017/07/11 jQuery
Weex开发之WEEX-EROS开发踩坑(小结)
2019/10/16 Javascript
JavaScript手写数组的常用函数总结
2020/11/22 Javascript
[01:36]DOTA2完美大师赛趣味视频之与队友相处的十万个技巧
2017/11/19 DOTA
使用python Django做网页
2013/11/04 Python
解决Python的str强转int时遇到的问题
2018/04/09 Python
python调用c++ ctype list传数组或者返回数组的方法
2019/02/13 Python
centos6.5安装python3.7.1之后无法使用pip的解决方案
2019/02/14 Python
python多线程实现代码(模拟银行服务操作流程)
2020/01/13 Python
python3排序的实例方法
2020/10/20 Python
HTML5边玩边学(3)像素和颜色
2010/09/21 HTML / CSS
详解如何使用rem或viewport进行移动端适配
2020/08/14 HTML / CSS
Stokke美国官方网店:高级儿童家具、推车、汽车座椅和配件
2020/06/06 全球购物
Linux管理员面试经常问道的相关命令
2014/12/12 面试题
英文自荐信
2013/12/19 职场文书
学生打架检讨书大全
2014/01/23 职场文书
5.12护士节活动总结
2015/02/10 职场文书
2016年师德学习心得体会
2016/01/12 职场文书
Python数组变形的几种实现方法
2022/05/30 Python
浅谈MySql update会锁定哪些范围的数据
2022/06/25 MySQL