我在带有核心i7处理器和4 GB RAM的Ubuntu 14.04 PC上从Linux终端运行此代码:
library(parallel)
workerFunc <- function(n) { return(n^2) }
a <- function(){
CurrentTime <- Sys.time()
res <- lapply(values, workerFunc)
TimeTaken <- Sys.time() - CurrentTime
print(TimeTaken)
}
b <- function(){
CurrentTime <- Sys.time()
numWorkers <- detectCores()
res <- mclapply(values, workerFunc, mc.cores = numWorkers-2)
TimeTaken <- Sys.time() - CurrentTime
print(TimeTaken)
}
c <- function(n){
values <<- 1:n
print("Evaluating a : ")
a()
print("Evaluating b : ")
b()
}
以n = 9999999作为参数运行c()
,代码运行a()
,但在达到b()
时,系统挂起。对于n的较小值,因为n = 9999,n = 999,a()
和b()
都可以正常工作。什么是可能的解决方案?