จากงานสู่งานย่อย
ในแบบฝึกหัดนี้ จะใช้การประมวลผลแบบขนานเพื่อเรียกใช้ฟังก์ชัน take_mean_age() ซึ่งคำนวณอายุเฉลี่ยของนักกีฬาในแต่ละปีจากชุดข้อมูลการแข่งขันโอลิมปิก DataFrame athlete_events ถูกโหลดไว้ให้แล้ว และมีคอลัมน์ที่เกี่ยวข้อง ได้แก่:
Year: ปีที่การแข่งขันโอลิมปิกจัดขึ้นAge: อายุของนักกีฬาโอลิมปิก
จะใช้ API multiprocessor.Pool ซึ่งช่วยให้กระจายงานไปยังหลายโปรเซสได้ ฟังก์ชัน parallel_apply() ถูกกำหนดไว้ในโค้ดตัวอย่างแล้ว โดยรับอินพุตเป็นฟังก์ชันที่ต้องการนำไปใช้ การจัดกลุ่มข้อมูล และจำนวนคอร์ที่ต้องการสำหรับการวิเคราะห์ โปรดทราบว่า decorator @print_timing ถูกใช้เพื่อวัดเวลาของแต่ละการดำเนินการ
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Data Engineering เบื้องต้น
คำแนะนำการฝึกหัด
- เติมโค้ดให้สมบูรณ์ โดยเรียกใช้
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'), ____)