parSapply() kullanma
Daha önce şu oyunu oynamıştık:
- Başlat:
total = 0. - Tek bir zar at ve
total'a ekle. totalçiftse,total'ı sıfıra çek.total10'dan büyükse oyun biter.
Oyun play() fonksiyonu ile simüle edilebilir:
play <- function() {
total <- no_of_rolls <- 0
while(total < 10) {
total <- total + sample(1:6, 1)
# Eğer çiftse. 0'a sıfırla
if(total %% 2 == 0) total <- 0
no_of_rolls <- no_of_rolls + 1
}
no_of_rolls
}
Oyunu 100 kez simüle etmek için bir for döngüsü veya sapply() kullanabiliriz:
res <- sapply(1:100, function(i) play())
Bu paralel çalıştırma için mükemmel!
Fonksiyonları bir kümede kullanılabilir yapmak için clusterExport() fonksiyonunu kullanırsın. Bu, bir küme ve fonksiyonun adını içeren bir dize alır.
clusterExport(cl, "some_function")
Bu egzersiz
Verimli R Kodu Yazma
kursunun bir parçasıdırEgzersiz talimatları
play() fonksiyonu çalışma alanında tanımlı.
makeCluster()kullanarak bir küme oluştur; kullanılan çekirdek sayısını 2 olarak ayarla. Sonucuclolarak sakla.play()fonksiyonunu kümeye aktar.- Yukarıdaki
sapply()fonksiyonunuparSapply()olarak yeniden yaz. stopCluster()kullanarak kümeyi durdur.
Uygulamalı interaktif egzersiz
Bu örnek kodu tamamlayarak bu egzersizi bitirin.
library("parallel")
# Create a cluster via makeCluster (2 cores)
cl <- ___
# Export the play() function to the cluster
___
# Re-write sapply as parSapply
res <- sapply(1:100, function(i) play())
# Stop the cluster
___