foreach() %dopar% : Chaque processus écrit dans un même fichier
Bonjour,
Je voudrais savoir comment pourrais-je dans un programme parallélisé avec foreach() %dopar% faire en sorte que chaque processus écrivent dans un même fichier.
J'ai essayé plein de méthodes mais aucune ne fait vraiment ce que je veux.
( Je veux ouvrir une fois la connexion vers le fichier puis la fermer à la fin alors qu'avec write.table() il ouvre autant de fois qu'il doit écrire quelque chose )
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| path_file <- "path"
cl <- makeCluster(3)
registerDoParallel(cl)
# fileConn <- file(path_file,open = "a")
# lock <-tempfile()
# locked <- flock::lock(lock)
foreach(i = 1:103) %dopar% #do
{
# locked <- flock::lock(lock, exclusive = T)
phrase <- paste("hello","world", i,"\n")
cat(phrase, file = path_file, append=TRUE)
# flock::unlock(locked)
}
# close(fileConn)
parallel::stopCluster(cl) |