改用 parApply
若要使用 parallel 套件在平行環境中執行程式碼,基本流程有三個步驟。
- 使用
makeCluster()建立叢集。 - 執行工作。
- 使用
stopCluster()停止叢集。
建立叢集最簡單的方法,是將一個數字傳給 makeCluster()。這會建立一個預設型別的叢集,並在相對應數量的核心上執行程式碼。
物件 dd 是一個有 10 個欄、100 列的資料框。以下程式碼使用 apply() 計算每個欄的中位數:
apply(dd, 2, median)
若要在平行環境中執行,只要把 apply() 換成 parApply()。此函式的引數與原本相同,但需要在原本 apply() 的引數之前,先提供叢集物件。
本練習屬於課程
撰寫高效 R 程式碼
練習說明
- 使用
detectCores()函式,將可用核心數量列印到主控台。 - 使用
makeCluster()建立叢集;將使用的核心數設為 2。把結果儲存為cl。 - 將上面的
apply()呼叫改寫為parApply()。記得現在第一個引數應該是叢集物件cl。 - 使用
stopCluster()停止叢集。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# Determine the number of available cores
___
# Create a cluster via makeCluster
cl <- makeCluster(___)
# Parallelize this code
apply(dd, 2, median)
# Stop the cluster
stopCluster(cl)