R中的并行化

时间:2014-02-27 12:37:36

标签: r foreach parallel-processing

我在R中有以下独立的嵌套循环,我想在10个内核上并行化它们,我已经阅读了很多关于使用foreach在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) 

1 个答案:

答案 0 :(得分:4)

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

我建议您先将R内部并行化步骤的结果合并,然后立即写出完整的文件,或让每个线程写入自己的文件,然后合并文件。

使用System命令通常不是问题,因为执行的命令不会相互干扰。

请提供有关您尝试过的并行化方法的详细信息。他们为什么不工作?你在使用Windows吗?如果没有,那么doMC的效果非常好:

library(doMC)
registerDoMC(10)

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