Я пишу на стандартный вывод в программе Python следующим образом:
Код: Выделить всё
for line in sys.stdin:
print line
Код: Выделить всё
tail -f data.txt | grep -e APL | python -u Interpret.py
- как указано выше, используя флаг -u при вызове Python
- вызов sys.stdout.flush() после каждого вызова sys.stdout.write()
... все это создает буферизованный поток, в котором Python ждет около минуты, чтобы распечатать первый несколько строк. - использовал следующую измененную команду:
stdbuf -o0 Tail -f data.txt | stdbuf -o0 -i0 grep -e APL | stdbuf -i0 -o0 python -u Interpret.py
Код: Выделить всё
tail -f data.txt | grep -e APL
Итак, как мне отключить буферизацию?
ОТВЕТ: Оказывается, буферизация есть на обоих концах канала.>
Подробнее здесь: https://stackoverflow.com/questions/841 ... -buffering
Мобильная версия