sys 모듈은 파이썬 인터프리터가 제공하는 변수와 함수를 직접 제어할 수 있게 해주는 모듈이다.
sys 모듈은 강제로 스크립트를 종료할 수도 있고 파이썬 모듈들이 저장된 위치등을 알 수도 있는 등 시스템을 제어할 수 있는 모듈
input은 입력받은 값의 개행(줄바꿈) 문자를 삭제시켜 반환되고, prompt message를 파라미터로 받아서 사용할 수 있다.
하지만 sys.stdin.readline은 개행 문자를 포함한 값을 반환되고 prompt message를 파라미터로 받아 사용할 수 없다.
input에 비해 속도가 느려지진 않았을 것이다.
빠르게 정보를 받아오기 위해서는 sys.stdin.readline을 사용하면 좋기 때문에 알고리즘 문제에서 사용한다.
import sys
input_x = input()
print(input_x)
input_y = sys.stdin.readline()
print(input_y)
print('-----end------')
결과
sys.stdin.readline()으로 받은 input_y는 출력 시 개행 문자가 있어 한 줄이 띄어져 있고
input()으로 받은 input_x는 개행 문자가 없는 걸 확인할 수 있었다.
import sys
str_list_x = list(input())
print(str_list_x)
str_list_y = list(sys.stdin.readline())
print(str_list_y)
str_list_y_2 = list(sys.stdin.readline().strip())
print(str_list_y_2)
print('-----end------')
결과
sys.stdin.readline()으로 입력받을 시 원치 않게 개행문자가 포함될 수 있으므로 strip()함수를 사용하면 개행문자를 제거할 수 있다.
sys.stdin.readline() 을 쓰는 것이 빠르다.
한번에 읽어와 버퍼에 저장하는 stdin.readline()가 하나씩 누를 때마다 데이터를 버퍼에 보관하는 input() 보다 처리 속도가 빠르다. 즉, 버퍼 사이즈 차이로 입력이 반복될 수록 stdin.readline()이 우위를 가진다.
a, b = map(int, input().split())
import sys
c, d = map(int, sys.stdin.readline().split())
numbers = list(map(int, input().split()))
str_list = [input() for _ in range(n)]
arr = [list(map(int, input())) for _ in range(n)]
arr = [list(map(int, input().split())) for _ in range(n)]
https://green-leaves-tree.tistory.com/12
https://developeryuseon.tistory.com/90