E/S rápida para programación competitiva en Python

La entrada/salida en Python a veces puede llevar mucho tiempo en los casos en que la entrada es enorme o para generar cualquier cantidad de líneas o una gran cantidad de arrays (listas) línea tras línea.

Entrada rápida

Normalmente, la entrada se toma de STDIN en forma de String usando input() . Y este STDIN se encuentra en el expediente del juez. Así que intente leer la entrada directamente desde el archivo del juez usando el módulo del sistema operativo (OS) y el módulo de entrada/salida (io). Esta lectura se puede hacer en forma de bytes. Al usar este método, la entrada de enteros funciona normalmente, pero para la entrada de strings, almacenará la string como un byte como un objeto. Para corregir esto, la string se puede decodificar usando la función de decodificación .

A continuación se muestra la implementación de Fast I/O en Python:

Python3

# Python program to illustrate the use
# of fast Input / Output
import io, os, time
  
# Function to take normal input
def normal_io():
    
      # Stores the start time
    start = time.perf_counter()
      
    # Take Input
    s = input().strip();
      
      # Stores the end time
    end = time.perf_counter()
      
    # Print the time taken
    print("\nTime taken in Normal I / O:", \
                      end - start)
  
# Function for Fast Input
def fast_io():
    
    # Reinitialize the Input function
    # to take input from the Byte Like 
    # objects
    input = io.BytesIO(os.read(0, \
         os.fstat(0).st_size)).readline
  
    # Fast Input / Output
    start = time.perf_counter()
  
    # Taking input as string 
    s = input().decode()
      
      # Stores the end time
    end = time.perf_counter()
  
    # Print the time taken
    print("\nTime taken in Fast I / O:", \
                      end - start)
  
# Driver Code
if __name__ == "__main__":
  
    # Function Call
    normal_io()
      
    fast_io()

Producción:

Salida rápida

En lugar de enviar a STDOUT , podemos intentar escribir en el archivo del sistema del juez. El código para eso sería usar sys.stdout.write() en lugar de print() en Python . Pero recuerde que solo podemos generar strings usando esto, así que convierta la salida en una string usando str() o map() .

A continuación se muestra la implementación de la salida rápida:

Python3

# Python program to illustrate the use
# of fast Input / Output
import time, sys
  
# Function to take normal input
def normal_out():
    
      # Stores the start time
    start = time.perf_counter()
  
    # Output Integer
    n = 5
    print(n)
  
    # Output String
    s = "GeeksforGeeks"
    print(s)
  
    # Output List
    arr = [1, 2, 3, 4]
    print(*arr)
  
      # Stores the end time
    end = time.perf_counter()
      
    # Print the time taken
    print("\nTime taken in Normal Output:", \
                      end - start)
  
# Function for Fast Output
def fast_out():
  
    start = time.perf_counter()
    # Output Integer
    n = 5
    sys.stdout.write(str(n)+"\n")
  
    # Output String
    s = "GeeksforGeeks\n"
    sys.stdout.write(s)
  
    # Output Array
    arr = [1, 2, 3, 4]
    sys.stdout.write(
        " ".join(map(str, arr)) + "\n"
    )
          
    # Stores the end time
    end = time.perf_counter()
      
    # Print the time taken
    print("\nTime taken in Fast Output:", \
                      end - start)
  
# Driver Code
if __name__ == "__main__":
  
    # Function Call
    normal_out()
      
    fast_out()

Producción:

Publicación traducida automáticamente

Artículo escrito por thekushalghosh 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 *