使用python多线程进行简单的性能测试

步骤:

*定义请求函数

*把请求函数添加进入多线

参考代码:

 1 import threading
 2 import time
 3 import requests
 4 
 5 # 获取毫秒级时间
 6 def get_time_ms():
 7     ct = time.time()    # 时间戳
 8     local_time = time.localtime(ct) # 本地化时间
 9     cart_time_strftime = time.strftime("%Y-%m-%d %H:%M:%S", local_time)  # 格式化时间
10     cart_time_strftime_ms = (ct - int(ct)) * 1000
11     ms = "%s.%03d" % (cart_time_strftime, cart_time_strftime_ms) # 拼接,获取毫秒级时间
12     return ms
13 
14 # 定义请求函数
15 def trafficSearch():
16     session = requests.session()
17     url = "https://www.cnblogs.com/xuxiongbing/p/9475772.html"
18     try:
19         jmt_request = session.get(url)
20         status_code = jmt_request.status_code
21         return status_code
22     except Exception as e:
23             return str(e)
24 
25 threads = []
26 for jk in range(1,100):
27     s = threading.Thread(target=trafficSearch,args=())    # 把请求函数加入多线程中去
28     threads.append(s)
29 
30 
31 if __name__ == '__main__':
32     for t in threads:
33         t.setDaemon(True)           # 把多线程设置为守护线程
34         t.start()             # 开始执行多线程
35         print (('%s 执行时间为 %s') % (t,get_time_ms()))     # 输出执行时间
36     t.join()       # 阻塞主线程执行
37     print("all over %s" % get_time_ms())
38     exit()

执行结果为

 

 

我这里只是请求,然后把请求加入了多线程,并没有断言。要断言自己加把

这里,我有一个思考,参考请求结果,会发现大部分的线程请求响应都是在一秒内完成,但不是同毫秒内完成的。所以,我在想,性能测试是不是没有真正意义上的并发,只能是狭义上的并发。

关于并发的定义,即同时执行,这个时应该指的是用户能够接受的时间或者客户要求的时间,而不是一秒,我估计很多测试者都会有这个误解,认为并发就是要在一秒内完成。

另外还有网络上的延时,不可能有真正意义上的并发,只能是狭义上的并发。

 

posted on 2018-09-25 15:44  说什么好呢  阅读(2251)  评论(0编辑  收藏  举报