Начиная с Python 3.3, функция print() поддерживает аргумент ключевого слова "flush" (см. документацию):
print('Hello World!', flush=True)
Ответ 3
# reopen stdout file descriptor with write mode # and 0 as the buffer size (unbuffered) import io, os, sys try: # Python 3, open as binary, then wrap in a TextIOWrapper with write-through. sys.stdout = io.TextIOWrapper(open(sys.stdout.fileno(), 'wb', 0), write_through=True) # If flushing on newlines is sufficient, as of 3.7 you can instead just call: # sys.stdout.reconfigure(line_buffering=True) except TypeError: # Python 2 sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)
Ссылки: "Себастьян", где-то в списке рассылки Python.
Ответ 4
Да, это так.
Вы можете отключить это в командной строке с помощью переключателя "-u".
В качестве альтернативы вы могли бы вызвать .flush() в sys.stdout при каждой записи (или обернуть его объектом, который делает это автоматически)