Как автор future framework, я предлагаю вам взглянуть на пакет future.apply , например
library(future.apply)
userFunc2 <- function(listOfX) {
res <- future_sapply(listOfX, .heavyStuff)
return(res)
}
По умолчаниючто все работает последовательно, но если пользователь пожелает, он может использовать любой параллельный будущий бэкэнд, который ему захочется, например,
library(future)
plan(multiprocess) # parallel on local machine - all cores by default
library(future.batchtools)
plan(batchtools_sge) # parallel on an SGE compute cluster
library(future)
plan(sequential) # sequentially
Шаблон проектирования таков, что вы решаете что для распараллеливания, тогда как пользователь как для распараллеливания.