各スレッドの結果を 1 つの共通ファイルに保存する R の並列プロセスがあります。ただし、データの重複があるため、そうすると問題が発生します。私はデータフレームに集約し、最後にすべてのデータを一度に書き込むことができますが、データが巨大であるため、システムのメモリが不足したり、何か他のことが起こったりしてもデータが失われないようにしたいと考えています. 1 つのファイルに書き込み、ファイルがロックされていること、またはデータが非同期に書き込まれていることを確認するにはどうすればよいですか。念のため Windows でコードを実行しておりdoSNOW
、並列化に使用しています。
メインコードはこちら
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
}