2014-02-27 37 views
0

我在R中有以下独立的嵌套循环,我想在10个内核上并行化它们,我已经阅读了许多有关使用foreach的R上的并行化的文章,但是,它们中的非似乎正在工作,或者它在串行如果曾经工作过!R的并行化

我需要一些帮助,因为在循环内我写结果到.csv文件和内循环中我使用系统调用来运行其他python脚本,我不知道这是否与并行化矛盾

for(x in seq(1,dim(trainData)[1],2)){ 
for(h in 1:end){ 
RMSD=system(command,intern = TRUE,ignore.stderr = TRUE) 
write.table(data, file ="read.csv", append = T, quote = F, sep = ",",row.names=F,col.names=F) 
+2

如果你想在'R'中瘫痪,试试'while(T){i = 1}':) – Zbynek

回答

4

让许多并行化线程写入同一个文件几乎肯定不是一个好主意。如果两个或多个人同时尝试这样做,许多事情可能会出错。

我建议您首先将R中并行化步骤的结果组合起来,然后一次写出完整的文件,或者让每个线程写入其自己的文件,然后合并文件。

鉴于执行的命令不会相互干扰,所以正常使用系统命令并不是问题。

请提供更多关于您尝试的并行化方法的信息。他们为什么不工作?你使用Windows?如果不是,那么doMC工作得很好:

library(doMC) 
registerDoMC(10) 

foreach(i=1:10, .combine=c) %dopar% { 
    return(i^2) 
}