從任務拆解到子任務
在這題中,你會使用平行運算來套用函式 take_mean_age(),用以計算奧運賽事資料集中某一年度運動員的平均年齡。系統已經為你載入 athlete_events DataFrame,其中包含至少下列兩個欄位:
Year:該場奧運舉辦的年份Age:該名奧運選手的年齡
你將使用 multiprocessor.Pool API,把工作負載分配到多個程序。範例程式碼中已定義 parallel_apply() 函式。它的輸入包含要套用的函式、分組方式,以及分析所需的核心數量。請注意,程式使用了 @print_timing 裝飾器來量測每次操作的時間。
本練習屬於課程
Data Engineering 入門
練習說明
- 完成程式碼,先以
1個核心套用take_mean_age,接著用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'), ____)