Получение выходного подпроцесса использования в реальном времени

Если вы хотите, чтобы изменял цвет только при сортировке, присвойте ссылку на шаблон и перейдите по ссылке, чтобы проверить, активна ли сортировка и присутствует ли значение сортировки.

 ID 

StackBlitz

https://stackblitz.com/edit/angular-5fzkja?embed=1&file=app/table-overview-example. HTML

124
задан Mad Physicist 16 May 2017 в 14:40
поделиться

4 ответа

Я попробовал это, и по какой-то причине, хотя код

for line in p.stdout:
  ...

агрессивно буферизирует, вариант

while True:
  line = p.stdout.readline()
  if not line: break
  ...

нет.По-видимому, это известная ошибка: http://bugs.python.org/issue3907 (По состоянию на 29 августа 2018 года проблема закрыта)

78
ответ дан 24 November 2019 в 01:08
поделиться

I ran into the same problem awhile back. My solution was to ditch iterating for the read method, which will return immediately even if your subprocess isn't finished executing, etc.

3
ответ дан 24 November 2019 в 01:08
поделиться

Вы можете попробовать это:

import subprocess
import sys

process = subprocess.Popen(
    cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE
)

while True:
    out = process.stdout.read(1)
    if out == '' and process.poll() != None:
        break
    if out != '':
        sys.stdout.write(out)
        sys.stdout.flush()

Если вы используете readline вместо read, в некоторых случаях входное сообщение не печатается. Попробуйте сделать это с помощью команды, которая требует встроенного ввода, и убедитесь сами.

18
ответ дан 24 November 2019 в 01:08
поделиться

Использование pexpect [ http://www.noah.org/wiki/Pexpect ] с неблокирующими readlines решит эту проблему. Это происходит из-за того, что трубы буферизуются, и поэтому вывод вашего приложения буферизуется трубой, поэтому вы не можете получить этот вывод, пока буфер не заполнится или процесс не умрет.

1
ответ дан 24 November 2019 в 01:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: