IniziaInizia gratis

Da attività a sottoattività

In questo esercizio userai il calcolo parallelo per applicare la funzione take_mean_age() che calcola l'età media degli atleti in un dato anno nel dataset degli eventi olimpici. Il DataFrame athlete_events è già stato caricato e contiene, tra le altre, due colonne:

  • Year: l'anno in cui si è svolto l'evento olimpico
  • Age: l'età dell'olimpionico

Userai le API di multiprocessor.Pool, che ti permettono di distribuire il carico di lavoro su più processi. La funzione parallel_apply() è definita nel codice di esempio. Accetta in input la funzione da applicare, il raggruppamento da usare e il numero di core necessari per l'analisi. Nota che il decoratore @print_timing viene usato per misurare la durata di ogni operazione.

Questo esercizio fa parte del corso

Introduzione al Data Engineering

Visualizza il corso

Istruzioni dell'esercizio

  • Completa il codice in modo da applicare take_mean_age prima con 1 core, poi con 2 e infine con 4 core.

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

# 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'), ____)
Modifica ed esegui il codice