Как реализовать мультиобработку или потоки в функции? - PullRequest
2 голосов
/ 10 июля 2019

У меня есть следующие функции в 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...