- [[python - concurrent futures]], [[python - concurrents futures ThreadPoolExecutor submit]]
# Problem
How to parallel loop in R? One option is to use `parallel::mclapply`. Note that `mclapply` uses forking, which is efficient on Unix-like systems (Linux, macOS) but not suitable for Windows. On Windows, mclapply falls back to lapply and doesn't provide parallel execution.
```r
library(parallel)
n_cores <- detectCores() - 2 # leave 2 cores unused so it doesn't use all resources and crash the system
# example 1: function with 1 parameter
func <- function(n) {
print(n)
idx <- sample(1:nrow(mtcars), size = nrow(mtcars), replace = TRUE)
results <- coef(lm(mpg ~ cyl, mtcars[idx, ]))
return(results)
}
n <- 5
mclapply(1:n, func, mc.cores = n_cores)
# example 2: function with multiple parameters
func <- function(x, y) {
return(x + y)
}
constant <- 10
numbers <- 1:10
mclapply(numbers, function(num) func(num, constant), mc.cores = n_cores)
# example 3: mixing parameters
func <- function(x, y, z) {
return(x + y + z)
}
constant <- 0.1
numbers1 <- 1:10 * 100
numbers2 <- 1:10
mclapply(1:length(numbers1), function(i) func(numbers1[i], numbers2[i], constant), mc.cores = n_cores)
```
# Resources