Bắt đầu ngayBắt đầu miễn phí

Từ tác vụ đến các tác vụ nhỏ

Trong bài này, bạn sẽ dùng tính toán song song để áp dụng hàm take_mean_age() nhằm tính tuổi trung bình của vận động viên theo từng năm trong bộ dữ liệu sự kiện Olympic. DataFrame athlete_events đã được nạp sẵn và bao gồm, trong số các cột khác, hai cột sau:

  • Year: năm diễn ra kỳ Olympic
  • Age: tuổi của vận động viên

Bạn sẽ dùng API multiprocessor.Pool để phân bổ khối lượng công việc qua nhiều tiến trình. Hàm parallel_apply() đã được định nghĩa trong mã mẫu. Hàm này nhận vào hàm cần áp dụng, tiêu chí nhóm, và số lõi cần cho phân tích. Lưu ý rằng decorator @print_timing được dùng để đo thời gian cho mỗi thao tác.

Bài tập này là một phần của khóa học

Introduction to Data Engineering

Xem khóa học

Hướng dẫn bài tập

  • Hoàn thiện mã để bạn áp dụng take_mean_age lần lượt với 1 lõi, sau đó 2 và cuối cùng là 4 lõi.

Bài tập tương tác thực hành trực tiếp

Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.

# 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'), ____)
Chỉnh sửa và Chạy Mã