使用python多线程进行简单的性能测试
Posted 说什么好呢
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用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()
执行结果为
我这里只是请求,然后把请求加入了多线程,并没有断言。要断言自己加把
这里,我有一个思考,参考请求结果,会发现大部分的线程请求响应都是在一秒内完成,但不是同毫秒内完成的。所以,我在想,性能测试是不是没有真正意义上的并发,只能是狭义上的并发。
关于并发的定义,即同时执行,这个时应该指的是用户能够接受的时间或者客户要求的时间,而不是一秒,我估计很多测试者都会有这个误解,认为并发就是要在一秒内完成。
另外还有网络上的延时,不可能有真正意义上的并发,只能是狭义上的并发。
以上是关于使用python多线程进行简单的性能测试的主要内容,如果未能解决你的问题,请参考以下文章