我在 R 中有一个并行进程,应该将每个线程的结果保存到一个公共文件中。但是这样做会产生问题,因为存在数据重叠。我确实在一个数据帧中聚合,最后可以一次写入所有数据,但由于数据很大,我想确保如果系统内存不足或发生其他事情时数据不会丢失。我如何写入一个文件并确保该文件被锁定或数据是异步写入的。我在 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
}