如何在函数中实现多处理或多线程?

2024-06-16 11:33:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我在python中有以下函数:

def functionA(bandwidth, range_start, range_end):
    for bandwidth in range(range_start, range_end, 1):
        os.system('iperf -c ' + server_address + ' -u -p 50001 -b ' + str(bandwidth) + 'M -i 1')

def functionB(bandwidth, range_start, range_end):
    for bandwidth in range(range_start, range_end, 1):
        os.system('iperf -c ' + server_address + ' -u -p 50001 -b ' + str(bandwidth) + 'M -i 1'

我的目标是当bandwidth值达到某个值(比如说20)时继续运行Iperf或者字面上的这个functionA,我的意思是保持bandwidth变量的值为20,而另一个functionB在达到20之后开始运行。同时,当bandwidth值达到不同的某个值(比如说40)时,functionB也继续运行。此时,functionA不再具有bandwidth的静态值20,但它会增加到无穷大。而functionB保持40作为bandwidth的静态值

首先,我想使用while循环,如下所示:

while True:
    os.system('iperf -c ' + server_address + ' -u -p 50001 -b ' + str(bandwidth) + 'M -i 1')

但是,只要函数A在无限循环中,就不能这样做

我也想过使用线程和多处理,但我不知道如何在这里应用它。对我来说太复杂了

编辑

假设我们正在运行函数,如果您可以看到带宽正在使用range()增加,但是当它达到带宽值20时,它将启动iperf进程,静态值为带宽20。 同时,函数b开始运行,当达到带宽值40时,它以静态值带宽40运行iperf。此时,当函数b开始生成静态带宽40时,函数停止iperf(生成20Mbps流量),开始另一个或其生成流量的过程,从20开始到无限(使用range())。同时,函数b以40带宽静态值持续运行无限iperf进程

值为20的函数在第一次停止时。而functionB以静态带宽值40继续运行iperf


Tags: 函数serverosaddressdef静态rangesystem