Live-вывод / поток из подпроцесса Python - PullRequest
0 голосов
/ 08 января 2019

Я использую Python и его библиотеку подпроцессов для проверки вывода вызовов с использованием strace, что-то в отношении:

subprocess.check_output(["strace", str(processname)]) 

Однако, это только дает мне вывод после вызванного подпроцесса, уже завершенного, что очень ограничивает мой вариант использования.

Мне нужен своего рода «поток» или прямой вывод из процесса, поэтому мне нужно прочитать вывод , пока процесс все еще выполняется, а не только после его завершения.

Есть ли удобный способ добиться этого с помощью библиотеки подпроцессов? Я думаю о каком-то опросе каждые х секунд, но не нашел никаких подсказок относительно того, как реализовать это в документации.

Большое спасибо заранее.

1 Ответ

0 голосов
/ 08 января 2019

Согласно документации :

Popen.poll()

Проверьте, завершен ли дочерний процесс. Установить и вернуть атрибут кода возврата.

Итак, на основании этого вы можете:

process = subprocess.Popen('your_command_here',stdout=subprocess.PIPE)
while True:
    output = process.stdout.readline()
    if process.poll() is not None and output == '':
        break
    if output:
        print (output.strip())
retval = process.poll()

Это будет цикл, чтение стандартного вывода и отображение вывода в режиме реального времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...