Van taak naar subtaken
In deze oefening ga je parallel computing gebruiken om de functie take_mean_age() toe te passen, die de gemiddelde leeftijd van atleten in een bepaald jaar berekent in de dataset met Olympische evenementen. De DataFrame athlete_events is voor je geladen en bevat onder andere twee kolommen:
Year: het jaar waarin het Olympisch evenement plaatsvondAge: de leeftijd van de Olympiër
Je gaat de multiprocessor.Pool-API gebruiken, waarmee je je werklast over meerdere processen kunt verdelen. De functie parallel_apply() is gedefinieerd in de voorbeeldcode. Die neemt als invoer de toe te passen functie, de gebruikte groepering en het aantal cores dat voor de analyse nodig is. Let op: de decorator @print_timing wordt gebruikt om elke bewerking te timen.
Deze oefening maakt deel uit van de cursus
Introductie tot Data Engineering
Oefeninstructies
- Maak de code af zodat je
take_mean_ageeerst met1core toepast, daarna met2en tot slot met4cores.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# 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'), ____)