Разница между методами run и Popen в модуле subprocess заключается в следующем:
- Метод run запускает указанную программу и ждёт окончание её работы. dzen.ru Параметры запускаемой программы указываются в виде элементов списка. dzen.ru Метод возвращает результат как объект CompletedProcess. dzen.ru
- Метод Popen сразу после запуска указанного процесса возвращает управление, то есть запущенный процесс будет выполняться в фоновом режиме по отношению к родительскому процессу. dzen.ru Метод возвращает объект Popen, который имеет ряд компонентов, например метод wait() ждёт завершение процесса, а с помощью poll() можно осуществлять опрос. dzen.ru
Таким образом, метод run используется для запуска программы и ожидания её завершения, а метод Popen позволяет продолжать работу до завершения процесса, а затем повторно вызывать метод Popen.communicate() для передачи и получения данных в процесс. stackoverflow.com