2014-02-27 34 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) 
}