[Python] for loop 반복문의 진척율을 콘솔창에 출력해서 확인하는 방법
이번 포스팅에서는 Python의 for loop 반복문의 진척율을 콘솔창에 출력해서 확인하는 방법을 소개하겠습니다.
먼저, 예제로 사용할 간단한 DataFrame을 만들어보겠습니다.
import numpy as np import pandas as pd df = pd.DataFrame(np.arange(10000).reshape(-1, 2), columns=['x1', 'x2']) df.head()
|
for loop 예문은 DataFrame의 매 3의 배수 행은 'x1'과 'x2'를 더해서 'x3'를 만들고, 3의 배수 행이 아닌 경우는 'x1'에서 'x2'를 뺀 값으로 'x3'를 만드는 것입니다.
for i in range(df.shape[0]): if i % 3 == 0: df.loc[i, 'x3'] = df.loc[i, 'x1'] + df.loc[i, 'x2'] else: df.loc[i, 'x3'] = df.loc[i, 'x1'] - df.loc[i, 'x2'] df.head(10)
|
가장 간단하게 for loop 반복문의 진척율을 확인할 수 있는 방법은 전체 행 중에서 반복문이 수행 중인 행의 위치를 매번 콘솔창에 프린트하도록 하는 방법입니다.
for i in range(df.shape[0]): if i % 3 == 0: df.loc[i, 'x3'] = df.loc[i, 'x1'] + df.loc[i, 'x2'] else: df.loc[i, 'x3'] = df.loc[i, 'x1'] - df.loc[i, 'x2']
progress = 100*(i+1)/df.shape[0] print("===== %d%% completed =====" % progress)
|
그런데 위처럼 프린트문을 사용하면 for loop문이 실행되는 매 행마다 한줄씩 프린트가 되므로 콘솔 창이 매우 길게 늘어질 수 있습니다.
이때 sys.stdout 을 사용하면 아래 예시처럼 매 진척율을 같은 줄에서 진척율만 숫자가 바뀌면서 나타낼 수 있습니다.
from sys import stdout for i in range(df.shape[0]): if i % 3 == 0: df.loc[i, 'x3'] = df.loc[i, 'x1'] + df.loc[i, 'x2'] else: df.loc[i, 'x3'] = df.loc[i, 'x1'] - df.loc[i, 'x2']
progress = 100*(i+1)/df.shape[0] stdout.write("\r ===== %d%% completed =====" % progress) stdout.flush() stdout.write("\n")
|
많은 도움이 되었기를 바랍니다.