Por que as instruções de impressão em python que contêm argumentos 'end =' se comportam de maneira diferente em while-loops?

Estou executando o python versão 2.7.3 no MacOSX.

Considere este bloco de código:

from __future__ import print_function
import time
x = 0
while x < 5:
    print(x)
    x += 1
    time.sleep(1)

Se eu executar este script, observo a saída esperada: os números0 através4 com um\n personagem acrescentado a cada número. Além disso, cada número é exibido após uma pausa de um segundo.

0
1
2
3
4

Agora considere este bloco de código:

from __future__ import print_function
import time
x = 0
while x < 5:
    print(x, end='')
    x += 1
    time.sleep(1)

A saída é o que eu espero,01234 sem o\né, mas ocronometragem é inesperado. Em vez de exibir cada dígito após uma pausa de um segundo, o processo aguarda quatro segundos e exibe todos os cinco números.

Porqueprint('string') se comportar de maneira diferenteprint('string', end='') em while-loops? Existe alguma maneira de exibir os personagens sem novas linhas, um segundo de cada vez? eu tenteisys.stdout.write(str(x)), mas se comporta da mesma maneira queprint(end='').

questionAnswers(2)

yourAnswerToTheQuestion