所以我尝试使用降雪包在 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)]))
我只是使用了错误的语法吗?我怎样才能让它并行运行?