Для запуска программ из моих Python-скриптов я использую следующий метод:
def execute(command):
process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
output = process.communicate()[0]
exitCode = process.returncode
if (exitCode == 0):
return output
else:
raise ProcessException(command, exitCode, output)
Поэтому, когда я запускаю процесс, подобный Process.execute("mvn clean install")
, моя программа ждет, пока процесс не завершится, и только тогда я получаю полный вывод моей программы. Это раздражает, если я запускаю процесс, который занимает некоторое время.
Могу ли я позволить моей программе записывать выходные данные процесса построчно, опрашивая выходные данные процесса до его завершения в цикле или что-то в этом роде?
** [EDIT]
Извините, я не очень хорошо искал, прежде чем опубликовать этот вопрос. Потоки на самом деле ключ. Здесь нашел пример, который показывает, как это сделать: **
Подпроцесс Python. Открыть из потока