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 : Sélectionner tout - Visualiser dans une fenêtre à part
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)
Partager