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生成随机数的方法
Jan 14 Python
Python实现抓取百度搜索结果页的网站标题信息
Jan 22 Python
Python实现全角半角字符互转的方法
Nov 28 Python
使用PyV8在Python爬虫中执行js代码
Feb 16 Python
TensorFlow tf.nn.max_pool实现池化操作方式
Jan 04 Python
python读取ini配置的类封装代码实例
Jan 08 Python
python 日志 logging模块详细解析
Mar 31 Python
Window版下在Jupyter中编写TensorFlow的环境搭建
Apr 10 Python
Jupyter notebook设置背景主题,字体大小及自动补全代码的操作
Apr 13 Python
python3.x中安装web.py步骤方法
Jun 23 Python
在Python3.74+PyCharm2020.1 x64中安装使用Kivy的详细教程
Aug 07 Python
python实现大文本文件分割成多个小文件
Apr 20 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代码优化及php相关问题总结
2006/10/09 PHP
php+jQuery+Ajax实现点赞效果的方法(附源码下载)
2020/07/21 PHP
laravel5.1框架model类查询的实现方法
2019/10/08 PHP
Firefox outerHTML实现代码
2009/06/04 Javascript
jQuery Study Notes学习笔记 (二)
2010/08/04 Javascript
基于jquery ajax 用户无刷新登录方法详解
2012/04/28 Javascript
js 取时间差去掉周六周日实现代码
2012/12/25 Javascript
js 实现在离开页面时提醒未保存的信息(减少用户重复操作)
2013/01/16 Javascript
js禁止页面使用右键(简单示例代码)
2013/11/13 Javascript
JavaScript移除数组内重复元素的方法
2015/03/18 Javascript
AngularJS初始化静态模板详解
2016/01/14 Javascript
使用 jQuery 实现表单验证功能
2017/07/05 jQuery
前端主流框架vue学习笔记第一篇
2017/07/26 Javascript
js基于FileSaver.js 浏览器导出Excel文件的示例
2017/08/15 Javascript
实例分析JS与Node.js中的事件循环
2017/12/12 Javascript
详解Angular2学习笔记之Html属性绑定
2018/01/03 Javascript
如何快速解决JS或Jquery ajax异步跨域的问题
2018/01/08 jQuery
vue中父子组件注意事项,传值及slot应用技巧
2018/05/09 Javascript
element el-input directive数字进行控制
2018/10/11 Javascript
js纯前端实现腾讯cos文件上传功能的示例代码
2019/05/14 Javascript
帮你彻底搞懂JS中的prototype、__proto__与constructor(图解)
2019/08/23 Javascript
怎么理解wx.navigateTo的events参数使用详情
2020/05/18 Javascript
python私有属性和方法实例分析
2015/01/15 Python
Python多线程编程(七):使用Condition实现复杂同步
2015/04/05 Python
基于python的Tkinter实现一个简易计算器
2015/12/31 Python
最近Python有点火? 给你7个学习它的理由!
2017/06/26 Python
python中将函数赋值给变量时需要注意的一些问题
2017/08/18 Python
详解python中的线程
2018/02/10 Python
使用Pandas将inf, nan转化成特定的值
2019/12/19 Python
python实现UDP协议下的文件传输
2020/03/20 Python
Eastbay官网:美国最大的运动鞋网络零售商
2016/07/27 全球购物
教育科学研究生自荐信
2013/10/09 职场文书
运动会搞笑广播稿
2014/10/14 职场文书
党员干部对十八届四中全会的期盼
2014/10/17 职场文书
2015年机关党建工作总结
2015/05/22 职场文书
公务员廉洁从政心得体会
2016/01/19 职场文书