Отключить буферизациюPython

Программы на Python
Ответить
Anonymous
 Отключить буферизацию

Сообщение Anonymous »

Где здесь находится буфер... и как его отключить?
Я пишу на стандартный вывод в программе 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
Это создает постоянный поток строк... он, конечно, не так буферизуется, как команда Python.
Итак, как мне отключить буферизацию?
ОТВЕТ: Оказывается, буферизация есть на обоих концах канала.>

Подробнее здесь: https://stackoverflow.com/questions/841 ... -buffering
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»