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

时间:2019-07-10 16:03:50

标签: python multithreading multiprocessing

我在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'

我的目标是在Iperf达到某个值(假设为20)时继续运行functionA或字面上的bandwidth,我的意思是保持{{1}的值20 }变量,而另一个bandwidth在达到20后开始运行。与此同时,当functionB的值达到另一个特定值(假设为40)时,functionB也会继续运行。到那时,bandwidth的静态值20不再为functionA,但它增加到无限大。 bandwidth保持functionB的静态值为40。

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

while

但是,只要函数A处于无限循环中就无法完成。

我还考虑过使用线程和多处理,但是我不知道如何在这里应用它。对我来说似乎太复杂了。

修改

假设我们正在运行 functionA ,如果您看到使用 range()来增加带宽,但是当达到< em> bandwidth 值为20,它会以静态值 bandwidth 20开始 iperf 的过程。 同时,功能B 开始运行,当其达到带宽值40时,它将运行 iperf ,其静态值为 bandwidth < / em>40。那时候,当 functionB 开始生成静态带宽 40时, functionA 会停止iperf(生成20Mbps流量),以启动另一个或其生成从20到无限(使用 range())的流量的过程。同时,功能B 继续运行具有40个带宽静态值的无限 iperf 进程

具有值带宽20的功能,它在第一次停止。而functionB继续以静态带宽值为40运行iperf。

0 个答案:

没有答案