Zacznij terazZacznij za darmo

Od zadania do podzadań

W tym ćwiczeniu użyjesz przetwarzania równoległego, aby zastosować funkcję take_mean_age(), która oblicza średni wiek sportowca w danym roku na podstawie zbioru danych o wydarzeniach olimpijskich. Ramka danych athlete_events jest już wczytana i zawiera między innymi dwie kolumny:

  • Year: rok, w którym odbyło się wydarzenie olimpijskie
  • Age: wiek olimpijczyka

Skorzystasz z API multiprocessor.Pool, które umożliwia rozłożenie obciążenia na kilka procesów. Funkcja parallel_apply() jest zdefiniowana w przykładowym kodzie. Przyjmuje jako argumenty: stosowaną funkcję, sposób grupowania oraz liczbę rdzeni potrzebnych do analizy. Zwróć uwagę, że dekorator @print_timing służy do mierzenia czasu każdej operacji.

To ćwiczenie jest częścią kursu

Wprowadzenie do inżynierii danych

Zobacz kurs

Instrukcje do ćwiczenia

  • Uzupełnij kod tak, aby zastosować take_mean_age najpierw na 1 rdzeniu, następnie na 2 i na końcu na 4 rdzeniach.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

# 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'), ____)
Edytuj i uruchom kod