Чтобы запускать программы из моих сценариев 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] Извините, я не очень хорошо разбирался перед публикацией этого вопроса. Threading - это на самом деле ключ. Нашел здесь пример, который показывает, как это сделать: ** Python Subprocess.Popen из потока