안녕하세요! 오늘은 joblib 라이브러리를 활용해 여러 파일을 병렬로 읽는 방법을 소개합니다. 대량의 데이터를 처리할 때 반복적으로 read_excel()을 사용하면 속도가 느려질 수 있는데요. 이때 joblib을 활용하면 CPU의 여러 코어를 동시에 활용해 처리 속도를 크게 높일 수 있습니다.
joblib 병렬 처리 기본 개념
joblib의 핵심은 Parallel과 delayed입니다. delayed는 각 작업을 지연시켜 함수로 감싸고, Parallel은 이 함수들을 병렬로 실행해줍니다.
예제 코드
아래 예제에서는 지정된 폴더 내 .xlsx 파일을 병렬로 읽어와 하나의 DataFrame으로 병합합니다.
import os
import pandas as pd
from joblib import Parallel, delayed
from tqdm import tqdm
# 경로와 설정
folder_url = './total_raw/'
file_list = os.listdir(folder_url)
# 병렬 처리 대상 함수
def Parallel_read_file(file_name):
if '.xlsx' not in file_name:
return None
try:
df = pd.read_excel(os.path.join(folder_url, file_name))
return df
except Exception as e:
print(f"Error reading {file_name}: {e}")
return None
# 병렬 실행
results = Parallel(n_jobs=-1)( # 모든 CPU 코어 사용
delayed(Parallel_read_file)(f) for f in tqdm(file_list)
)
# 유효한 DataFrame만 모아서 병합
df_list = [r for r in results if r is not None]
df = pd.concat(df_list, ignore_index=True)
사용 팁
n_jobs=-1은 모든 코어를 사용한다는 의미이며, 병렬 속도는 코어 수에 따라 달라집니다.- 예외 처리(try-except)를 통해 오류가 발생해도 전체 실행이 멈추지 않도록 설정하는 것이 중요합니다.
- 파일 수가 매우 많을 경우, 진행률을 tqdm으로 시각화하면 디버깅과 진행상황 확인에 도움이 됩니다.
joblib을 사용하면 반복적인 파일 처리 작업의 효율을 크게 높일 수 있습니다. 특히 수백 개의 Excel 파일을 읽고 처리해야 하는 작업에 강력한 도구가 됩니다. 데이터 수집, 전처리 단계에서 처리 속도를 높이고 싶은 분들에게 적극 추천합니다!

보이시나요? CPU 사용률 100%, 메모리도 활발히 사용 중인 모습을 보고 저는 컴퓨터를 열일하게 만든 것 같아 기분이 좋았는데요. 병렬 처리를 적용하면 이처럼 컴퓨터가 여러 작업을 동시에 처리하느라 바쁘게 움직이게 됩니다. joblib은 멀티코어 환경을 효과적으로 활용할 수 있어, 반복적인 데이터 로딩이나 대량 처리 작업을 수행하는 데 매우 유용합니다. 여러분도 기회가 된다면 꼭 한번 사용해보세요!