ファイルへの書き込みに関する多くの質問を見てきましたが、テキスト ファイルを開き、いくつかのデータを追加してから、多くの接続から (つまり、並列で) 書き込みを行う場合に再度閉じる方法として、最も堅牢な方法は何か疑問に思っています。コンピューティング状況)、各接続がいつファイルに書き込みたいかを保証することはできません。
たとえば、デスクトップのコアのみを使用する次のおもちゃの例では、問題なく動作しているように見えますが、書き込みが長くなり、ファイルに書き込むプロセスの数が増えると、この方法が失敗する傾向があるかどうか疑問に思っています(特に、遅延が発生する可能性があるネットワーク共有全体)。
同時にファイルに書き込みたい他のスレーブプロセスが存在する可能性がある場合に、接続を開き、書き込み、閉じなければならない堅牢で決定的な方法を誰かが提案できますか?
require(doParallel)
require(doRNG)
ncores <- 7
cl <- makeCluster( ncores , outfile = "" )
registerDoParallel( cl )
res <- foreach( j = 1:100 , .verbose = TRUE , .inorder= FALSE ) %dorng%{
d <- matrix( rnorm( 1e3 , j ) , nrow = 1 )
conn <- file( "~/output.txt" , open = "a" )
write.table( d , conn , append = TRUE , col.names = FALSE )
close( conn )
}
これを行うための最善の方法、または最善の方法があるかどうかを探しています。おそらくRと、foreach
私が書き込みロックの問題と呼ぶものを自動的に処理しますか?
ありがとう。