НачатьНачать бесплатно

От задачи к подзадачам

В этом упражнении вы будете использовать параллельные вычисления для применения функции take_mean_age(), которая рассчитывает средний возраст спортсмена за каждый год в наборе данных об Олимпийских играх. DataFrame athlete_events уже загружен и содержит, среди прочих, два столбца:

  • Year: год проведения Олимпийских соревнований
  • Age: возраст спортсмена

Вы будете использовать API multiprocessor.Pool, который позволяет распределить нагрузку между несколькими процессами. Функция parallel_apply() определена в примере кода. Она принимает на вход применяемую функцию, параметры группировки и необходимое количество ядер для анализа. Обратите внимание, что декоратор @print_timing используется для замера времени выполнения каждой операции.

Это упражнение является частью курса

Введение в дата-инжиниринг

Посмотреть курс

Инструкции к упражнению

  • Дополните код так, чтобы сначала применить take_mean_age с 1 ядром, затем с 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'), ____)
Редактировать и запускать код