1 importrequests2 import queue #Queue模块中提供了同步的、线程安全的队列类,包括

3 #FIFO(先入先出)队列Queue,LIFO(后入先出)队列

4 #LifoQueue,和优先级队列PriorityQueue。这些队列都

5 #实现了锁原语,可在多线程通信中直接使用。

6 importthreading7 importtime8

9 status_code_list =[]10 exec_time =011 classMyThreadPool:12 def __init__(self, maxsize): #定义队列时有一个默认的参数

13 #maxsize, 如果不指定队列的长度,即manxsize=0,那么队列的长

14 #度为无限长,如果定义了大于0的值,那么队列的长度就是maxsize。

15 self.maxsize =maxsize16 self._pool =queue.Queue(maxsize)17 #maxsize设置队列的大小为pool的大小

18 for _ in range(maxsize): #为什么用一个下划线,因为实际上这

19 #里没用到这个变量,所以用一个符号就可以了。

20 self._pool.put(threading.Thread) #往pool里放线程数

21

22 defget_thread(self):23 returnself._pool.get()24

25 defadd_thread(self):26 self._pool.put(threading.Thread)27

28 defrequest_time(func):29 def inner(*args, **kwargs):30 globalexec_time31 start_time =time.time()32 func(*args, **kwargs)33 end_time =time.time()34 exec_time = end_time-start_time35

36 returninner37

38

39 defget_url(url):40 globalx,status_code_list41 headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36',42 }43 response = requests.get(url,headers=headers)44 code =response.status_code45 status_code_list.append(code)46 print(code)47 returncode48

49

50 def get_count(_url='http://news.baidu.com/sports',_count=100): #:param count: 每个线程请求的数量

51 globalstatus_code_list,url,count52 for i inrange(count):53 get_url(url)54

55 defrequest_status():56 count_num =len(status_code_list)57 set_code_list =set(status_code_list)58 status_dict ={}59 for i inset_code_list:60 status_dict[i] =str(status_code_list).count(str(i))61 echo_str(count_num, set_code_list, status_dict)62

63 defecho_str(count_num,set_code_list,status_dict):64 print('=======================================')65 print('请求总次数:%s'%count_num)66 print('请求时长:%s秒'%int(exec_time))67 second_request = count_num/int(exec_time)68 print('每秒请求约:%s次'%int(second_request))69 print('状态码 | 次数')70

71 for k,v instatus_dict.items():72 print(str(k)+'|'+str(v))73 print('=======================================')74

75

76 @request_time77 def run(url,thread_num=10,thread_pool=10):78 '''

79 :param thread_num: 总共执行的线程数(总的请求数=总共执行的线程数*每个线程循环请求的数量)80 :param thread_pool: 线程池数量81 :param url: 请求的域名地址82 '''

83 globalx,status_code_list84 pool =MyThreadPool(thread_pool)85 for i inrange(thread_num):86 t =pool.get_thread()87 obj = t(target=get_count)88 obj.start()89 obj.join()90

91

92 if __name__ == '__main__':93 count = 10 #单个线程的请求数

94 url = 'http://baidu.com'

95 run(url,100,100)96 request_status()

python压测接口_python的一个接口压测脚本相关推荐

  1. python 京东 抢券_Python写一个京东抢券脚本

    最近看到京东图书每天有优惠券发放,满200减100,诱惑还是蛮大的.反正自己抢不到,想着写个脚本试试. ##几个关键步骤 获取优惠券的url 直接审查元素 获取cookie 通过本地代理,比如Burp ...

  2. python抢券代码_Python写一个京东抢券脚本

    最近看到京东图书每天有优惠券发放,满200减100,诱惑还是蛮大的.反正自己抢不到,想着写个脚本试试. 几个关键步骤 获取优惠券的url 直接审查元素 获取cookie 通过本地代理,比如BurpSu ...

  3. python 测试用例管理 生成_python自动生成接口测试用例

    在python中Template可以将字符串的格式固定下来,重复利用. 同一套测试框架为了可以复用,所以我们可以将用例部分做参数化,然后运用到各个项目中. 代码如下: coding=utf-8 ''' ...

  4. python登录注册接口_Python实现登录接口

    要求: 输入用户名和密码 认证成功,显示欢迎信息 用户名3次输入错误后,退出程序 密码3次输入错误后,锁定用户名 Readme: UserList.txt 是存放用户名和密码的文件,格式为:usern ...

  5. python创建数字列表_Python 生成一个从0到n个数字的列表4种方法小结

    Python 生成一个从0到n个数字的列表4种方法小结 我就废话不多说了,直接上代码吧! 第一种 def test1(): l = [] for i in range(1000): l = l + [ ...

  6. java中一个接口调取另一个接口(接口一调取接口二)

    工具类 package com.utils;import java.io.BufferedReader; import java.io.InputStream; import java.io.Inpu ...

  7. java定义一个接口shape_java声明一个接口Shape2D用来实现二维几何形状类Circle和Rectangle。...

    java声明一个接口Shape2D用来实现二维几何形状类Circle和Rectangle.10 匿名网友2015.05.20浏览371次分享举报 1.声明一个接口Shape2D用来实现二维几何形状类C ...

  8. python源码脚本实例_python编写一个会算账的脚本的示例代码

    python算账脚本 1.假如小明卡里有10000元去商场买东西发现钱不够又向父母借了5000账单如下 2.以下脚本就能实现上面的运算 from time import strftime import ...

  9. python编写脚本教程_python编写一个会算账的脚本的示例代码

    python算账脚本 1.假如小明卡里有10000元去商场买东西发现钱不够又向父母借了5000账单如下 2.以下脚本就能实现上面的运算 from time import strftime import ...

最新文章

  1. java技术全掌握了_你必须掌握的 21 个 Java 核心技术!
  2. sturst2的原理及环境搭建
  3. 信号量 读者写者问题
  4. 行波iq调制器_低功率IQ调制器的基带设计实例—电路精选(1)
  5. 如何处理使用ngrx时遇到的错误消息: NullInjectorError R3InjectorError(AppModule)[StoreFeatureModule]
  6. 哈利波特与魔杖的故事(洛谷P4613题题解,Java语言描述)
  7. 在PyCharm下使用Jupyter Notebook
  8. 矩阵计算的理论与方法_基于微带线的相位补偿方法分析
  9. java cas并发_java并发之CAS
  10. pytorch学习笔记(二十):Padding-And-Strides
  11. php删除数据库数据操作日志文件,MSSQL清空日志删除日志文件
  12. 云端服务器只能查看文件,云端服务器只能查看文件夹
  13. 数商云SCM供应链协同管理系统解决方案
  14. 22考研清华电子系957,390+高分上岸初复试经验分享
  15. stdio.h 之 printf
  16. 计算机系统修复命令提示符,老司机帮您w10蓝屏后用命令提示符修复系统的方法...
  17. shark恒破解笔记2-绕过自校验
  18. windows服务器硬盘怎么扩容,windows2016 扩容硬盘
  19. latex公式常见问题:居中与左对齐,多行公式左对齐,上下标
  20. 好用的待办事项APP有哪些

热门文章

  1. Moore-Penrose广义逆:可解决MATLAB报错“矩阵接近奇异值,或者缩放错误。结果可能不准确”
  2. C/C++协程库libco:微信怎样漂亮地完成异步化改造
  3. vs2008生成安装部署文件的步骤
  4. 基于深度学习的人脸检测与静默活体检测——C++实现
  5. Linux下1号进程的前世(kernel_init)今生(init进程)----Linux进程的管理与调度
  6. 深度学习框架PyTorch一书的学习-第三章-Tensor和autograd-1-Tensor
  7. mysql 锁表查询和解锁操作
  8. Squid安装与配置
  9. DBA(六):MHA集群
  10. MyBatis版本升级引发的线上告警回顾及原理分析