Открыть вторую консоль Python

Есть ли способ открыть вторую консоль python и позволить новой консоли запускать, пока оригинальная консоль продолжает работать, и когда новая консоль заканчивается, она отправляет обратно свои данные в виде переменной обратно в исходную консоль?

Ответ 1

Модуль sub-process может быть тем, что вы ищете. Однако дело в том, что вы получаете результат процесса после завершения всей программы. это означает, что если программа, которую вы пытаетесь запустить, запускается вечно, вы не сможете увидеть вывод до тех пор, пока он не завершит работу (либо путем принудительного его использования, либо с помощью методов завершения).

Пример того, как назначить вывод переменной, будет:

output,error=your_process.communicate()

Выходная часть этого - это то, что вы будете использовать (исходя из вашего вопроса). Однако ошибка заключается в том, что вы получаете, если вы ее запустили, и есть проблема (не возвращает 0). Если вы не хотите записывать ошибки, вы можете просто назначить его _.

Также обратите внимание, что если вы используете аргументы ключевого слова, я бы предложил использовать библиотеку shlex для разделения вашей строки на аргументы. (вы можете просто использовать регулярную строку, такую ​​как: var="mypythonprogram.py argument1 argument2" и использовать arguments=shlex.split(var), а затем просто указать ее в аргументы для подпроцесса.

Другой вариант, если вам не нужно взаимодействовать с программой, будет использовать Threads, и есть много вопросов о переполнении стека о них, а также много документации как официально, так и на других веб-сайтах по всему Интернету.

Ответ 2

Возможно, вам стоит заглянуть в многопроцессорные или многопоточные модули. Это поможет вам создать дочерние процессы из исходной (родительской) программы.