我在R中有一個並行進程,應該將每個線程的結果保存到一個公用文件中。但是這樣做會產生問題,因爲有數據重疊。我在數據框中進行聚合,並且可以一次寫入所有數據,但由於數據量很大,我想確保數據在系統內存不足或發生其他事情時不會丟失。 如何寫入一個文件並確保文件被鎖定或數據是異步寫入的。我正在Windows上運行我的代碼以防萬一,並且我正在使用doSNOW
進行並行化。使用foreach寫入R中的單個公用文件
這裏是主代碼
HedgedPortfolio <- data.frame()
cl<-makeCluster(6)
registerDoSNOW(cl)
no<-length(X)
HedgedPortfolio<-foreach(i=1:no,.combine='rbind') %dopar%
{
HedgeMain(as.Date(X[i]),InitPnlRecon)
}
stopCluster(cl)
HedgeMain<-function(X,InitPnlRecon)
{
OptimizedPort<-.............some computation
write.table(OptimizedPort,file="C:/OptimizedAll.opt",
quote=FALSE,append=TRUE,sep=";",
col.names = FALSE,row.names = FALSE)
OptimizedPort
}
相似問題:http://stackoverflow.com/q/12303088/602276 – Andrie