de lo que hace sys.stdout.flush()
hacer?Uso método sys.stdout.flush()
Respuesta
salida estándar de Python se almacena temporalmente (es decir, que recoge algunos de los datos de "escrito" a la salida estándar antes de que lo escribe en el terminal). Llamar al sys.stdout.flush()
lo fuerza a "vaciar" el búfer, lo que significa que escribirá todo en el búfer del terminal, incluso si normalmente esperaría antes de hacerlo.
Aquí es una buena información acerca de (des) búfer de E/S y por qué es útil:
http://en.wikipedia.org/wiki/Data_buffer
Buffered vs unbuffered IO
¡esto no funciona en Windows! –
@Ciastopiekarz ¿Qué podemos hacer para que el búfer se vacíe en las ventanas? – helplessKirk
@Ciastopiekarz ¿Cómo te das cuenta? Si tomo el guión Python de Andrew Clark y reemplazo la línea de impresión con 'sys.stdout.write ("% d "% i)', entonces tengo que descomentar la llamada a 'sys.stdout.flush()' para obtener el búfer para visualizar mientras se ejecuta el script. –
Considere la siguiente secuencia de comandos de Python simple:
import time
import sys
for i in range(5):
print i,
#sys.stdout.flush()
time.sleep(1)
Esto está diseñado para imprimir un número cada segundo durante cinco segundos, pero si se ejecuta como es ahora (dependiendo de su almacenamiento temporal del sistema por defecto) se puede no verá ninguna salida hasta que se complete la secuencia de comandos, y luego, de una vez, verá 0 1 2 3 4
impreso en la pantalla.
Esto se debe a que la salida se está almacenando en el búfer y, a menos que descargue sys.stdout
después de cada print
, no verá la salida inmediatamente. Quite el comentario de la línea sys.stdout.flush()
para ver la diferencia.
En Python 3.x, 'print i' debe reemplazarse por print (i, end = '') porque print() en Python 3 tiene un prefijo predeterminado end = '\ n' que hace que la consola se descargue. –
¡Estaba teniendo este problema! ¡Muchas gracias por aclarar por qué esto lo resuelve! –
Según mi entendimiento, cuando haya que ejecutar la impresión de salida de las declaraciones será escrito para amortiguar. Y veremos la salida en la pantalla cuando el búfer se vacíe (borre). Por defecto, el búfer se vaciará cuando el programa salga. PERO TAMBIÉN PODEMOS LIMPIAR EL BUFFER MANUALMENTE mediante el uso de la declaración "sys.stdout.flush()" en el programa. En el búfer de código siguiente se vaciarán cuando el valor de i alcanza 5.
usted pueda comprender ejecutando el código de abajo.
chiru @ línea: ~ $ cat flush.py
import time
import sys
for i in range(10):
print i
if i == 5:
print "Flushing buffer"
sys.stdout.flush()
time.sleep(1)
for i in range(10):
print i,
if i == 5:
print "Flushing buffer"
sys.stdout.flush()
chiru @ línea: ~ $
***** ***** SALIDA
chiru @ en línea: ~ $ pitón flush.py
0 1 2 3 4 5 Flushing buffer
6 7 8 9 0 1 2 3 4 5 Flushing buffer
6 7 8 9
chiru @ línea: ~ $
import sys
for x in range(10000):
print "HAPPY >> %s <<\r" % str(x),
sys.stdout.flush()
- 1. Python sys.stdout.flush() no funciona
- 2. De uso general Método FromEvent
- 3. Uso mangosta del método .select()
- 4. ¿Cuándo uso el método initWithCoder?
- 5. Uso apropiado del método estático
- 6. ¿Cómo uso HttpWebRequest con el método GET
- 7. El uso de const en un método
- 8. Método Python Definición El uso de decoradores
- 9. Objetivo C - ¿Cómo uso el método initWithCoder?
- 10. ¿Cómo uso el método CopyToDataTable de System.Data.DataTableExtensions?
- 11. ¿Cómo uso el método showAlert en Android?
- 12. ¿Cómo uso el método unittest setUplass()?
- 13. Uso método distinto __unicode__ en ModelChoiceField Django
- 14. Uso método de gatillo con retraso
- 15. Falta el método de uso en Rails
- 16. Uso de Guice sin un método principal
- 17. ¿Cómo uso el método writeToFile en un NSMutableDictionary?
- 18. ¿Cómo uso la reflexión para invocar un método con parámetros?
- 19. Casos de uso para el método dict 'setdefault'
- 20. Método de uso cruzado de la transformación: propiedad scale css?
- 21. ¿Cuál es el uso del método setTag de View?
- 22. método Invoke Reflexión sobre el uso de objetos COM
- 23. ¿cómo uso IDEA intellij para autocompletar los parámetros del método?
- 24. Caso de uso realista para el método de fábrica estático?
- 25. Infinite 100% uso de CPU en java.io.FileInputStream.readBytes (Método nativo)
- 26. cuál es el uso del método recycle() en TypedArray
- 27. ¿Cuál es el uso del método printStackTrace() en Java?
- 28. Uso de super con un método de clase
- 29. Uso del método dinámico C# para un objeto
- 30. uso del método equals() en la interfaz del comparador?
Ver: http://stackoverflow.com/questions/230751/how-to-flush-output-of-python-print – nitin