所以我尝试使用snowfall包在R中并行执行,使用我所有的cpu核心。这是我用于测试的代码:
library(snow)
library(snowfall)
sfInit(parallel = TRUE, cpus = 16, type = "SOCK")
data <- array(1:1000000, dim=c(1000000,1))
system.time(x <- sfLapply(data, fun=function(x){return (x*x) }))
由于它使用了所有可用的CPU核心,因此运行速度提高了16倍。 但是当我尝试这个时:
system.time(m2 <- J48(CHURNED_F~., data = data[, -c(1)]))
大约需要50秒,作为测试(仅占整个数据集的1%左右) 以下运行正确,但需要相同的时间,只使用一个CPU:
library(snow)
library(snowfall)
sfInit(parallel = TRUE, cpus = 16, type = "SOCK")
system.time(m2 <- sfLapply("CHURNED_F~.", J48, data[, -c(1)]))
我只是使用了错误的语法?如何并行运行?