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 实现归并排序算法
Jun 05 Python
Python实现 多进程导入CSV数据到 MySQL
Feb 26 Python
python实现NB-IoT模块远程控制
Jun 20 Python
将Dataframe数据转化为ndarry数据的方法
Jun 28 Python
Python3实现获取图片文字里中文的方法分析
Dec 13 Python
python实现任意位置文件分割的实例
Dec 14 Python
python scp 批量同步文件的实现方法
Jan 03 Python
Python数据类型之Dict字典实例详解
May 07 Python
python 实现PIL模块在图片画线写字
May 16 Python
详解Open Folder as PyCharm Project怎么添加的方法
Dec 29 Python
Django rest framework如何自定义用户表
Jun 09 Python
python开发人人对战的五子棋小游戏
May 02 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
3种平台下安装php4经验点滴
2006/10/09 PHP
PHP curl CURLOPT_RETURNTRANSFER参数的作用使用实例
2015/02/07 PHP
jquery HotKeys轻松搞定键盘事件代码
2008/08/30 Javascript
javascript 构建一个xmlhttp对象池合理创建和使用xmlhttp对象
2010/01/15 Javascript
有道JavaScript监听浏览器的问题
2010/06/23 Javascript
用js来定义浏览器中一个左右浮动元素相对于页面主体宽度的位置的函数
2012/01/21 Javascript
通过Javascript读取本地Excel文件内容的代码示例
2014/04/08 Javascript
php,js,css字符串截取的办法集锦
2014/09/26 Javascript
Node.js中child_process实现多进程
2015/02/03 Javascript
ECMAScript 5中的属性描述符详解
2015/03/02 Javascript
微信小程序实现顶部选项卡(swiper)
2020/06/19 Javascript
JS扩展String.prototype.format字符串拼接的功能
2018/03/09 Javascript
使用vue2.0创建的项目的步骤方法
2018/09/25 Javascript
mockjs+vue页面直接展示数据的方法
2018/12/19 Javascript
11个教程中不常被提及的JavaScript小技巧(推荐)
2019/04/17 Javascript
vue中nextTick用法实例
2019/09/11 Javascript
JavaScript实现随机五位数验证码
2019/09/27 Javascript
Vue实现base64编码图片间的切换功能
2019/12/04 Javascript
微信小程序实现点击导航条切换页面
2020/11/19 Javascript
Python3.0与2.X版本的区别实例分析
2014/08/25 Python
利用ctypes提高Python的执行速度
2016/09/09 Python
python3 发送任意文件邮件的实例
2018/01/23 Python
Pytorch入门之mnist分类实例
2018/04/14 Python
对numpy中array和asarray的区别详解
2018/04/17 Python
Laravel+Dingo/Api 自定义响应的实现
2019/02/17 Python
弄懂这56个Python使用技巧(轻松掌握Python高效开发)
2019/09/18 Python
Python函数式编程指南:对生成器全面讲解
2019/11/19 Python
PyTorch加载预训练模型实例(pretrained)
2020/01/17 Python
Python并发爬虫常用实现方法解析
2020/11/19 Python
canvas环形倒计时组件的示例代码
2018/06/14 HTML / CSS
医药营销专业个人自荐信
2013/09/29 职场文书
英文商务邀请信
2014/01/22 职场文书
学习型班组申报材料
2014/05/31 职场文书
2014年度个人工作总结范文
2015/03/09 职场文书
幼儿园教师读书笔记
2015/06/29 职场文书
使用python将HTML转换为PDF pdfkit包(wkhtmltopdf) 的使用方法
2022/04/21 Python