작업을 더 작은 하위 작업으로
이 연습에서는 병렬 컴퓨팅을 사용해 올림픽 이벤트 데이터셋에서 특정 연도의 선수 평균 나이를 계산하는 함수 take_mean_age()를 적용해 볼 거예요. 데이터프레임 athlete_events는 이미 로드되어 있으며, 그중 특히 다음 두 열을 포함해요.
Year: 올림픽이 개최된 연도Age: 선수의 나이
여러 프로세스에 작업을 분산할 수 있는 multiprocessor.Pool API를 사용할 거예요. parallel_apply() 함수는 샘플 코드에 정의되어 있으며, 적용할 함수, 그룹화 기준, 분석에 사용할 코어 수를 입력으로 받아요. 각 연산의 시간을 측정하기 위해 @print_timing 데코레이터가 사용된다는 점에 유의하세요.
이 연습은 강의의 일부입니다
데이터 엔지니어링 입문
연습 안내
- 코드를 완성해
take_mean_age를 먼저 코어1개로, 그다음2개, 마지막으로4개 코어로 적용하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# Function to apply a function over multiple cores
@print_timing
def parallel_apply(apply_func, groups, nb_cores):
with Pool(nb_cores) as p:
results = p.map(apply_func, groups)
return pd.concat(results)
# Parallel apply using 1 core
parallel_apply(take_mean_age, athlete_events.groupby('Year'), ____)
# Parallel apply using 2 cores
parallel_apply(take_mean_age, athlete_events.groupby('Year'), ____)
# Parallel apply using 4 cores
parallel_apply(take_mean_age, athlete_events.groupby('Year'), ____)