¿Por qué las declaraciones de impresión en python que contienen argumentos 'end =' se comportan de manera diferente en while-loops?

Estoy ejecutando Python versión 2.7.3 en MacOSX.

Considere este bloque de código:

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

Si ejecuto este script, observo la salida que espero: los números0&nbsp;mediante4&nbsp;con un\n&nbsp;Carácter añadido a cada número. Además, cada número se muestra después de una pausa de un segundo.

0
1
2
3
4

Ahora considera este bloque de código:

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

La salida es lo que espero.01234&nbsp;sin el\n's, pero elsincronización&nbsp;es inesperado En lugar de mostrar cada dígito después de una pausa de un segundo, el proceso espera cuatro segundos y luego muestra los cinco números.

Por queprint('string')&nbsp;comportarse de manera diferente aprint('string', end='')&nbsp;en while-loops? ¿Hay alguna forma de mostrar los caracteres sin nuevas líneas, un segundo a la vez? Lo intentésys.stdout.write(str(x)), pero se comporta de la misma manera queprint(end='').