จัดสรรทุนสังคมศาสตร์ด้วย Future
คุณทำงานให้กับมูลนิธิเพื่อการกุศลแห่งหนึ่ง มูลนิธินี้มอบทุนวิจัยให้กับมหาวิทยาลัยที่มีคะแนนประเมินการวิจัยด้านสังคมศาสตร์ติดอันดับหนึ่งเปอร์เซ็นต์แรกของประเทศ ดังนั้นในแต่ละปีจึงต้องคำนวณค่า cutoff ของคะแนนการวิจัย
ใน workspace มีลิสต์ชื่อ rating_list โดยแต่ละ element บรรจุคะแนนการวิจัยของมหาวิทยาลัยในแต่ละประเทศ นอกจากนี้ยังมีฟังก์ชัน generate_cutoff_future() ให้ใช้งาน ซึ่งสร้าง future สำหรับการคำนวณค่า cutoff อย่างไรก็ตาม ผู้จัดการของคุณยังไม่แน่ใจถึงข้อดีของ future เมื่อเทียบกับวิธีการทำงานแบบขนานอื่น ๆ คุณจึงต้องแสดงให้เห็นว่า future รองรับทั้งการรันแบบลำดับและแบบขนานได้โดยไม่ต้องแก้ไขโค้ดหลัก โดย package future ถูกโหลดไว้ให้แล้ว
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การเขียนโปรแกรมแบบขนานใน R
คำแนะนำการฝึกหัด
- สร้าง future แบบ sequential โดยใช้
lapply()กับgenerate_cutoff_future()บนrating_listภายใต้แผน sequential - ดึงค่าจาก future แบบ sequential
- สร้าง future แบบ parallel ภายใต้แผน parallel
- ดึงค่าจาก future แบบ parallel
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
plan(sequential)
# Create futures under sequential plan
seq_futures <- ___(___, ___)
# Extract values of sequential futures
seq_values <- ___(___)
plan(multisession, workers = 4)
# Create futures under multisession plan
par_futures <- ___(___, ___)
# Extract values of parallel futures
par_values <- ___(___)
plan(sequential)
cbind(seq_values, par_values)