Я знаю, что не должен вкладывать параллельные операторы, но я нахожусь в ситуации, когда мне приходится в основном вкладывать два вызова mclapply()
в мой код.
Это потому, что в моем коде у меня есть функция (назовем ее foo()
), которая уже использует mclapply()
внутри нее. В основном я хочу запускать параллельные потоки последовательной версии foo()
, делая что-то вроде этого:
mclapply(X, function(x) {
foo(x, mc.cores = 1)
},
mc.cores = 4)
Могу ли я просто запустить внутренний mclapply()
с mc.cores = 1
или мне следует реализовать последовательную версию foo()
?
Другими словами: mclapply(..., mc.cores = 1)
ведет себя точно так же, как lapply(...)
? Есть ли параллельные издержки, замедляющие программу в этом случае?