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