더북(TheBook)

4.2.21 IDLE 안에서 비효율적인 print 함수 사용을 줄인다

IDLE 안에서 호출한 print 문 실행 속도는 너무 느리다. 이런 경우 print 호출 빈도수를 줄이면 놀라울 정도로 처리 속도를 개선할 수 있다.

가령 별표 기호(*)로 40×20 블록을 출력하고 싶다고 해 보자. 가장 느린 방법은 각 문자를 개별적으로 출력하는 것이다. IDLE에서 다음 코드의 실행 속도는 고통스러울 정도로 느리다.

for i in range(20):
    for j in range(40):
        print('*', end=' ')
    print()

만약 한 번에 한 행의 별표 기호를 출력하면 훨씬 성능이 좋아진다.

row_of_asterisks = '*' * 40
for i in range(20):
    print(row_of_asterisks)

하지만 최고 성능을 확보하는 방법은 여러 줄의 큰 문자열을 미리 만들고 나서 print 함수를 한 번만 호출하게 코드를 변경하는 것이다.

row_of_asterisks = '*' * 40
s = ''
for i in range(20):
    s += row_of_asterisks + '\n'
print(s)
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.