Как получить данные stdout подпроцесса асинхронно?

Я написал простой скрипт python для своего приложения и предварительноопределил некоторые быстрые команды, такие как make и т. Д.

Я написал функцию для выполнения системных команд (linux):

def runCommand(commandLine):
    print('############## Running command: ' + commandLine)
    p = subprocess.Popen(commandLine, shell = True, stdout = subprocess.PIPE)
    print (p.stdout.read().decode('utf-8'))

Все работает хорошо, за исключением нескольких вещей:

  • Я использую cmake, и его вывод цветной. Есть ли шансы сохранить цвета на выходе?

  • Я могу посмотреть на результат после завершения процесса. Например, make работает в течение длительного периода времени, но я вижу результат только после полной компиляции. Как сделать это асинхронно?

10
задан Piotr Dobrogost 29 October 2012 в 21:22
поделиться