Home »
Python
Fast input / output for competitive programming in Python
By Yash Khandelwal Last updated : December 17, 2023
In competitive programming it is very important to make the program time efficient. And to make that one major problem is input and output. As input and output of the program occupy more time. So, because of that, the efficiency of code get decreased.
There are some of the specific functions that can be used for fast input and output.
Fast I/O for Competitive Programming in Python
Python provides two file objects stdin and stdout which are a part of the sys module, we can use the readline() method of stdin for input and the write() function of stdout for output.
1. stdin.readline() method
It is used to take the input, it takes the input as a string by default and if you want to take input as an integer then use the eval() or int() functions. If you want to take space separated inputs in a single line then use split().
Syntax
Below is the syntax to use the readline() method:
# import the package
from sys import stdin
stdin.readline(eval(input().split()))
instead of eval() you can also use int(). If you do not use any of these functions, input will be string by default
2. stdout.write() Method
It gives the output in string type. And if you want the multiple outputs in a single statement, use '+' in the between the two.
Syntax
Below is the syntax to use the write method:
# import the package
from sys import stdout
stdout.write('p', + ,'A', +, 'C')
To use the fast input output functions, you need to import the files which contain them i.e. "sys module".
Example 1: Python code for simple input, output
# python program without fast I/O
from time import perf_counter
#integer input from user, 2 input in single line
n,m = map(int,input().split())
t1_start = perf_counter()
for i in range(n):
t=int(input()) # user gave input n times
if t%m == 0:
print(t) #print the output if condition satisfied
t1_stop = perf_counter()# Stop the stopwatch/counter
print("Elapsed time:", t1_stop-t1_start) # Report results
Output
Example 2: Python code for fast input, output
# python program with fast I/O
#module contain stdin ,stdout
from sys import stdin, stdout
from time import perf_counter
#integer input from user ,2 input in single line
n,m=map(int,input().split())
t1_start = perf_counter()
for i in range(n):
t=int(stdin.readline()) # input using fast i/p method
if t%m == 0:
stdout.write(str(t)+'\n') #input using fast o/p method
t1_stop = perf_counter()# Stop the stopwatch
print("Elapsed time:", t1_stop-t1_start) # Report results
Output
It takes 0.004445707999999993 sec time to execute from input to output
Analysis
As you can see in the above code, that time taken by fast input method to run a 100 digit line is half the time taken in simple Input/Output.
Python Tutorial