開始使用免費開始

從任務拆解到子任務

在這題中,你會使用平行運算來套用函式 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'), ____)
編輯並執行程式碼