PL(Programming Language)/Python

[Python] 파이썬 multiprocessing package로 병렬 처리, 연산 속도 개선

탱젤 2021. 1. 13. 22:53

최근 대규모 데이터로 병렬처리가 많이 중요해졌다.

 

그리고 파이썬에는 병렬처리를 제공하는 패키지인 multiprocessing이 있다.

 

이번 포스팅은 multiprocessing 패키지를 이용해 cpu 코어 수만큼 병렬 처리하는 과정을 보여줄 예정이다.

 


 

1. CPU에 있는 코어의 수를 multiprocessing.cpu_count()를 이용해 확인

import multiprocessing as mp

num_cores = mp.cpu_count() # cpu 코어 수 반환

 

2. Dataframe multiprocessing 데이터프레임 병렬 처리, 한 줄씩 처리

def parallel_dataframe(df, func, num_cores):
    df_split = np.array_split(df, num_cores)
    pool = Pool(num_cores)
    df = pd.concat(pool.map(func, df_split))
    pool.close()
    pool.join()
    return df

- multiprocessing package의 pool을 사용해 map으로 데이터프레임 전체를 함수에 적용

 


pool.map은 함수 인자 한 개만 적용되는 게 단점이다.

multiple argument를 지원하는 병렬처리 방법은 구글링해보기.... 필수...

728x90