Я пытаюсь сделать многоядерную функцию (в Windows), которая в какой-то момент вызывает другую функцию рабочей лошадки (функция внутри функции).Вот минимальный рабочий пример.Вам понадобятся пакеты doSMP
и revoIPC
(чтобы получить их, см. Сообщение Тала здесь ).
func1 <- function(x) {sqrt(x)}
func2 <- function(y) {
func1(y)
}
library(doSMP)
wrk <- startWorkers(workerCount = 4) #I have 4 cores, so adjust to your specs
registerDoSMP(wrk)
obj.result <- foreach(i = 1:10000) %dopar% func2(i)
Вышеприведенная процедура не будет работать, но если я вложу func1
в func2
примерно так
func2 <- function(y) {
func1 <- function(x) {sqrt(x)}
func1(y)
}
процесс проходит гладко (насколько я могу судить).
Как я могу вызывать функции извне с помощью %dopar%
?