Обычно вывод в файл или консоль буферизуется с текстом, по крайней мере, до тех пор, пока вы не напечатаете новую строку. Флеш гарантирует, что любой вывод, который буферизуется, отправляется в пункт назначения.
Я использую его, например. когда я делаю запрос пользователя, например Do you want to continue (Y/n):
, перед получением ввода.
Это может быть смоделирован (на Ubuntu 12.4 с использованием Python 2.7):
from __future__ import print_function
import sys
from time import sleep
fp = sys.stdout
print('Do you want to continue (Y/n): ', end='')
# fp.flush()
sleep(5)
Если запустить это, вы увидите, что строка приглашения не показывает вплоть до конца сна и выхода из программы. Если вы раскомментируете строку с флешем, вы увидите приглашение, а затем подождите 5 секунд, чтобы программа закончила
Я считаю, что это вынуждает все данные, которые будут напечатаны на консоли, немедленно «промыть» на фактическую консоль и оставить ожидающий буфер печати. –
@ChristianStewart. Я не могу получить концепцию. Можете ли вы указать мне практический пример? –
@ChristianStewart: Я не уверен, что это всегда так, я помню случаи, когда вам нужна была новая строка для «autoflush». Вероятно, это зависит от ОС. – Anthon