Od úlohy k dílčím úkolům
V tomto cvičení využiješ paralelní výpočty k aplikaci funkce take_mean_age(), která počítá průměrný věk sportovců v daném roce v datasetu olympijských událostí. DataFrame athlete_events je již načtený a obsahuje mimo jiné dva sloupce:
Year: rok, ve kterém se olympijská událost konalaAge: věk olympionika
Budeš používat API multiprocessor.Pool, které ti umožňuje rozdělit zátěž mezi více procesů. Funkce parallel_apply() je definovaná v ukázkovém kódu. Jako vstup přijímá aplikovanou funkci, použité seskupení a počet jader potřebných pro analýzu. Všimni si, že dekorátor @print_timing slouží k měření času každé operace.
Toto cvičení je součástí kurzu
Introduction to Data Engineering
Pokyny k cvičení
- Doplň kód tak, aby se funkce
take_mean_agenejprve spustila s1jádrem, poté se2a nakonec se4jádry.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# 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'), ____)