1. Learn
  2. /
  3. Cursuri
  4. /
  5. Wydajny kod w R

Connected

exercițiu

Używanie parSapply()

Wcześniej symulowaliśmy następującą grę:

  • Inicjalizacja: total = 0.
  • Rzuć jedną kością i dodaj wynik do total.
  • Jeśli total jest parzyste, zresetuj total do zera.
  • Jeśli total jest większe niż 10, gra się kończy.

Grę można symulować za pomocą funkcji play():

play <- function() {
  total <- no_of_rolls <- 0
  while(total < 10) {
    total <- total + sample(1:6, 1)

    # If even. Reset to 0
    if(total %% 2 == 0) total <- 0 
    no_of_rolls <- no_of_rolls + 1
  }
  no_of_rolls
}

Aby zasymulować grę 100 razy, można użyć pętli for lub funkcji sapply():

res <- sapply(1:100, function(i) play())

To idealne zadanie do uruchomienia równoległego!

Aby udostępnić funkcje na klastrze, używa się funkcji clusterExport(). Przyjmuje ona klaster oraz ciąg znaków z nazwą funkcji.

clusterExport(cl, "some_function")

Instrucțiuni

100 XP

Funkcja play() została już zdefiniowana w twoim środowisku pracy.

  • Utwórz klaster za pomocą makeCluster(), ustawiając liczbę używanych rdzeni na 2. Wynik zapisz jako cl.
  • Wyeksportuj funkcję play() do klastra.
  • Przepisz powyższe wywołanie sapply(), używając parSapply().
  • Zatrzymaj klaster za pomocą stopCluster().