python的多线程并发测试

import threading
import requests
import datetime
import time

"""
@THREAD_NUM :线程数
@ONE_WORKER_NUM :每个线程循环数
"""
THREAD_NUM = 20
ONE_WORKER_NUM = 20
SUMTIME = 0.00
SUCCESSCOUNT = 0

def test():
    """
    :return:
    """
    global SUMTIME
    global SUCCESSCOUNT
    url = ""
    headers = {
        "charset": "UTF-8",
        "user-agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.0 Mobile/14E304 Safari/602.1",
    }
    response = requests.get(url,headers=headers)
    res_time = response.elapsed.microseconds/1000000
    print(res_time)
    print(datetime.datetime.now(),"---",response.text)
    SUMTIME = SUMTIME + res_time
    SUCCESSCOUNT = SUCCESSCOUNT + 1


def working():
    global ONE_WORKER_NUM
    for i in range(0,ONE_WORKER_NUM):
        test()


def t():
    global THREAD_NUM
    Threads = []
    for i in range(THREAD_NUM):
        t = threading.Thread(target=working,name="T"+str(i))
        t.setDaemon(True)
        Threads.append(t)
    for t in Threads:
        t.start()
    for t in Threads:
        t.join()

if __name__ == "__main__":
    t()
    print("并发数:" + str(THREAD_NUM * ONE_WORKER_NUM))
    print("成功数:" + str(SUCCESSCOUNT))
    print("成功率:" + str(SUCCESSCOUNT / (THREAD_NUM * ONE_WORKER_NUM) * 100) + "%")
    print("成功请求总响应时间:" + str(SUMTIME))
    (lambda x=SUMTIME, y=SUCCESSCOUNT: print("成功订单平均响应时间:" + str(x / y)) if y != 0 else print("成功数为0"))()
    (lambda x=SUMTIME, y=SUCCESSCOUNT: print("TPS:" + str(y / (x / y))) if x != 0 and y != 0 else print("成功数或响应时间为0"))()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值