Как распараллелить два командных процесса оболочки в python - PullRequest
0 голосов
/ 09 июля 2020

Я хочу, чтобы два подпроцесса работали параллельно, но у меня снова и снова возникают проблемы. Ниже вы найдете мой код.

def parallelProcesses (channelConfPath):
    channelArray = createChannelArray(channelConfPath)
    for i in range(1, len(channelArray)):
        processString1 = "someSzapShellCommand using channelConfPath"
        processString2 = "someDvbsnoopShellCommand"
        process1 = subprocess.Popen(processString1, shell=True)
        time.sleep(3)
        process2 = subprocess.Popen(processString2, shell=True)
        processes[1].wait()

process1 будет содержать команду оболочки szap для настройки на какой-то канал. process2 будет содержать команду оболочки dvbsn oop для анализа настроенного канала. Вот какой-то псевдокод, который описывает то, что я хочу:

 1. create array with the possible channels (works good as far as I can say)
 2. iterate over this array and:
 3. create the 2 processes (one with szap and one with dvbsnoop) and let them run parallely
     with the following constraints:
         - process2 (the dvbsnoop-process) should start 2-3 seconds after process1 because szap needs some time to tune in 
4. When process2 is finished, terminate process1 and go back to 2. and use the next channel for the iteration

Если бы я сделал это вручную, мне пришлось бы запускать szap в одном терминале, и пока он работает, откройте новый терминал и введите dvbsn oop в этой оболочке. Dvbsn oop завершится через некоторое время, и мне пришлось бы завершить процесс szap с помощью Ctrl + C в первой оболочке, чтобы настроиться на следующий канал.

Надеюсь, вы мне поможете.

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