性能测试与Jmeter测试原理---(2)

本文介绍了JMeter中线程组的工作原理,探讨线程数和循环次数如何实现并发。通过代码示例解释了线程分配和并发的实现方式,并讨论了影响并发模拟数量的因素,包括CPU性能、内存大小、线程资源占用以及电脑瓶颈问题。
摘要由CSDN通过智能技术生成

jmeter模拟并发的原理

线程组

打开jmeter添加线程组后我们会看到如图界面。
主要探讨下 线程数 循环次数 是如何实现的。
在这里插入图片描述``

线程的分配

这段代码的执行结果可以看到每次实例化之后,都会分配给不同的内存地址,表名每个线程都分配一个特定的内存。

import requests,threading
class Test():
    def __init__(self):
        self.session = requests.session()
        print(id(self.session))
if __name__ == '__main__':
    td_1 = Test()
    td_2 = Test()
    td_3 = Test()
    td_4 = Test()
    #这段代码的执行结果可以看到每次实例化之后,都会分配给不同的内存地址,表名每个线程都分配一个特定的内存。

下图的代码实例化之后进行了10次循环,这10次循环是同一个内存地址上进行的,没有实现并发的目的。

import requests,threading
class Test():
    def __init__(self):
        self.session = requests.session()
    def start(self):
        print(id(self.session))
if __name__ == '__main__':
    td_1 = Test()
    for i in range(10):
        threading.Thread(target=td_1.start())

将实例化写在循环内部,每次循环都会从新分配内存地址,可以实现并发的功能。

import requests,threading
class Test():
    def __init__(self):
        self.session = requests.session()
    def start(self):
        print(id(self.session))
if __name__ == '__main__':
    for i in range(10):
        td_1 = Test()
        threading.Thread(target=td_1.start())

每一个线程必须对应不同的session实例。
线程数和分配的内存地址的个数是一样的,经过上面的代码打底就清楚线程数是什么意思了。

循环次数表示的是每一个线程循环执行了多少次。
下面这个代码就可以说设置为:线程数3,循环次数2
输出结果为:
35612040
35612040
56028744
56028744
56028576
56028576
这种样子。

import requests,threading
class Test():
    def __init__(self):
        self.session = requests.session()
    def start(self):
        print(id(self.session))

if __name__ == '__main__':
    for i in range(3):
        td_1 = Test()
        for j in range(2):
            threading.Thread(target=td_1.start())

思考一个问题,一台电脑可以模拟多少个并发呢?

1)取决于CUP的性能,cpu性能越好模拟线程数越大。
2)内存越大,可分配的资源越多,可模拟的线程数也就越多。
3)每个线程占用资源也不一样,线程占用资源多自然就划分数目小。
4)电脑的瓶颈也会影响线程数。比如cpu性能很好但是内存满了,内存瓶颈就会影响线程数的运行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值