Функция subprocess.run() представляет собой высокоуровневый интерфейс для выполнения команд и является рекомендуемым способом запуска внешних процессов в большинстве случаев. 2 Она блокирует выполнение программы до завершения вызванного процесса и возвращает объект CompletedProcess, содержащий информацию о результатах выполнения. 2 При использовании этой функции можно указать различные параметры, влияющие на поведение процесса и способ обработки его вывода. 2
От остальных функций модуля subprocess функция run отличается тем, что запускает указанную программу и ждёт окончание её работы. 1
Для более сложных сценариев использования, требующих тонкого контроля над процессом выполнения, предназначен класс Popen. 2 Он предоставляет низкоуровневый интерфейс, позволяющий управлять потоками ввода-вывода процесса в реальном времени, проверять его состояние и при необходимости принудительно завершать выполнение. 2 При создании объекта Popen процесс запускается немедленно, но программа не блокируется в ожидании его завершения. 2