require(data.table)
require(forecast)
require(parallel)
mats <- data.table(x <- c(1:45))
mats$stmoney_rec<-0
mats$stmoney_sec1<-0
mats$stmoney_sec2<-0
mats$stmoney_sec3<-0
cl.cores <- detectCores()
cl <- makeCluster(cl.cores-1)
clusterExport(cl,"mats",envir = environment())
func <- function(i)
{
#在此处把并行代码依赖的包加上。
#require(data.table)
#require(...)
stmoney_rec <- i
stmoney_sec1 <- i + 1
stmoney_sec2 <- i + 2
stmoney_sec3 <- i + 3
list(i, stmoney_rec, stmoney_sec1, stmoney_sec2, stmoney_sec3)
}
res <- parLapply(cl, 1:45, func)
stopCluster(cl);
#在并行的函数func中做共享变量mats的赋值写操作是无效的,只能读。
#所以此处把结果传出来,在并行代码外部做共享变量mats的写操作
for(i in 1:length(res))
{
idx <- res[[i]][1][[1]]
mats[idx, 'stmoney_rec'] <- res[[i]][2][1]
mats[idx, 'stmoney_sec1'] <- res[[i]][3][1]
mats[idx, 'stmoney_sec2'] <- res[[i]][4][1]
mats[idx, 'stmoney_sec3'] <- res[[i]][5][1]
}