Python – sys.stdout.flush()

Un búfer de datos es una región de almacenamiento de memoria física que se utiliza para almacenar temporalmente datos mientras se mueven de un lugar a otro. Los datos se almacenan en un búfer a medida que se recuperan de un dispositivo de entrada o justo antes de enviarse a un dispositivo de salida o cuando se mueven datos entre procesos dentro de una computadora. La salida estándar de Python está almacenada en búfer. Esto significa que recopila algunos datos antes de que se escriban en la salida estándar y cuando se llena el búfer, se escriben en el terminal o en cualquier otro flujo de salida.

Veamos el código a continuación:

# Python3 program demonstrating working 
# of flush during output  
  
import sys
import time
  
for i in range(10):
    print(i)
    time.sleep(1)

Producción:

0
1
2
3
4
5
6
7
8
9

Cuando se ejecuta el programa anterior, los números del 0 al 9 se imprimen después de cada segundo en una nueva línea, es decir, la salida se elimina automáticamente. Esto se debe a que, de forma predeterminada, el parámetro final de la declaración de impresión se establece en ‘\n’, lo que vacía la salida.

Ahora veamos el siguiente código:

# Python3 program demonstrating working 
# of flush during output
  
import sys
import time
  
for i in range(10):
    print(i, end =' ')
    time.sleep(1)

Producción:

0 1 2 3 4 5 6 7 8 9

Cuando se ejecuta el programa anterior, no hay salida durante los primeros 9 segundos, luego en el décimo , todos los 10 números del 0 al 9 aparecen simultáneamente en una línea separada por espacios. Esto se debe a que la salida se almacena en búfer y no se vacía de ninguna manera.

Ahora, mira el siguiente código:

# Python3 program demonstrating working 
# of flush during output and usage of
# sys.stdout.flush() function
  
import sys
import time
  
for i in range(10):
    print(i, end =' ')
    sys.stdout.flush()
    time.sleep(1)

Producción:

0 1 2 3 4 5 6 7 8 9

Cuando se ejecuta el programa anterior, los números del 0 al 9 se imprimen cada segundo en la misma línea separados por espacios. Esto se debe a que la llamada sys.stdout.flush()lo obliga a «vaciar» el búfer, lo que significa que escribirá todo en el búfer en la terminal, incluso si normalmente esperaría antes de hacerlo. El módulo sys proporciona funciones y variables que se utilizan para manipular diferentes partes del entorno de tiempo de ejecución de Python. Nos permite acceder a parámetros y funciones específicos del sistema.

Otra forma de lograr la misma funcionalidad que la anterior es establecer el parámetro de descarga de la declaración de impresión en verdadero.

# Python3 program demonstrating working 
# of flush during output and usage of
# flush parameter of print statement
  
import sys
import time
  
for i in range(10):
    print(i, end =' ', flush = True)
    time.sleep(1)

Producción:

0 1 2 3 4 5 6 7 8 9 

Publicación traducida automáticamente

Artículo escrito por shobhitgupta907 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *