У меня есть следующие функции в 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
или буквально это functionA
, когда значение bandwidth
достигает определенного значения (скажем, 20) IСреднее значение имеет значение 20 для переменной bandwidth
, в то время как другое значение functionB
начинает работать после достижения значения 20. В то же время, functionB
продолжает работать и тогда, когда значение bandwidth
достигает другого определенного значения (скажем, 40).В это время functionA
перестает иметь статическое значение 20 для bandwidth
, но оно увеличивается до бесконечности.В то время как functionB
имеет статическое значение 40 для bandwidth
.
Во-первых, я подумал использовать цикл while
, как показано ниже:
while True:
os.system('iperf -c ' + server_address + ' -u -p 50001 -b ' + str(bandwidth) + 'M -i 1')
Однако это не может бытьсделано, пока функция A находится в бесконечном цикле.
Я думал также использовать Threads и MultiProcessing, но я не понимаю, как это можно применить здесь.Это кажется мне слишком сложным.
Редактировать
Допустим, мы запускаем functionA , если вы видите bandwidth увеличивается с использованием range () , но когда он достигает значения bandwidth 20, он запускает процесс iperf со статическим значением bandwidth 20. В то же время functionB начинает работать, и когда он достигает значения bandwidth 40, он запускает iperf со статическим значением bandwidth 40. В это время, когда functionB начинает генерировать статическую полосу пропускания 40, functionA останавливает iperf (генерирующий трафик 20 Мбит / с), чтобы запустить другой или его процессгенерирование трафика, который начинается с 20 до бесконечности (с использованием range () ).В то же время, functionB продолжает выполнять бесконечный iperf процесс со статическим значением 40 полосы пропускания
, который функционирует со значением полосы пропускания 20, где он остановился в первый раз.В то время как функция B продолжает работать с iperf со статической пропускной способностью 40.