De la tarea a las subtareas
Para este ejercicio, utilizarás la computación en paralelo para aplicar la función take_mean_age()
que calcula la edad media de los atletas en un año determinado en el conjunto de datos de eventos de las Olimpiadas. El DataFrame athlete_events
viene cargado y contiene, entre otras, dos columnas:
Year
: el año en que tuvo lugar el acontecimiento olímpicoAge
: la edad del atleta olímpico
Utilizarás la página multiprocessor.Pool
API, que te permite distribuir la carga de trabajo entre varios procesos. La función parallel_apply()
está definida en el código de ejemplo. Toma como entrada la función que se aplica, la agrupación utilizada y el número de núcleos necesarios para el análisis. Ten en cuenta que el decorador @print_timing
se utiliza para temporizar cada operación.
Este ejercicio forma parte del curso
Introducción a la ingeniería de datos
Instrucciones de ejercicio
- Completa el código, de forma que primero apliques
take_mean_age
con el núcleo1
, luego2
y finalmente4
núcleos.
Ejercicio interactivo práctico
Pruebe este ejercicio completando este código de muestra.
# 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'), ____)