Есть ли способ открыть вторую консоль python и позволить новой консоли запускать, пока оригинальная консоль продолжает работать, и когда новая консоль заканчивается, она отправляет обратно свои данные в виде переменной обратно в исходную консоль?
Открыть вторую консоль Python
Ответ 1
Модуль sub-process
может быть тем, что вы ищете. Однако дело в том, что вы получаете результат процесса после завершения всей программы. это означает, что если программа, которую вы пытаетесь запустить, запускается вечно, вы не сможете увидеть вывод до тех пор, пока он не завершит работу (либо путем принудительного его использования, либо с помощью методов завершения).
Пример того, как назначить вывод переменной, будет:
output,error=your_process.communicate()
Выходная часть этого - это то, что вы будете использовать (исходя из вашего вопроса). Однако ошибка заключается в том, что вы получаете, если вы ее запустили, и есть проблема (не возвращает 0). Если вы не хотите записывать ошибки, вы можете просто назначить его _
.
Также обратите внимание, что если вы используете аргументы ключевого слова, я бы предложил использовать библиотеку shlex
для разделения вашей строки на аргументы. (вы можете просто использовать регулярную строку, такую как: var="mypythonprogram.py argument1 argument2"
и использовать arguments=shlex.split(var)
, а затем просто указать ее в аргументы для подпроцесса.
Другой вариант, если вам не нужно взаимодействовать с программой, будет использовать Threads, и есть много вопросов о переполнении стека о них, а также много документации как официально, так и на других веб-сайтах по всему Интернету.
Ответ 2
Возможно, вам стоит заглянуть в многопроцессорные или многопоточные модули. Это поможет вам создать дочерние процессы из исходной (родительской) программы.
Ответ 3
Прочитайте многопроцессорность Python. В нем есть примеры обмена объектами между процессами.
Ответ 4
Похоже, вы хотите сделать что-то вроде того, что предлагает библиотека многопроцессорности. Без дополнительной информации все, что я могу сделать, - это указать вам документы.
например:
http://www.ibm.com/developerworks/aix/library/au-multiprocessing/ или http://docs.python.org/library/multiprocessing.html