Je suis confronté à un difficile à déboguer problème avec makePSOCKcluster
de la parallel
paquet sur R x 64 de Windows. Il ne se fait pas sur R i386 sur Windows, ni sur aucun OSX ou Linux. Malheureusement, il ne se produit pas systématiquement non plus, seulement de temps en temps et tout à fait au hasard.
Ce qui se passe, c'est que l' makePSOCKcluster
fonction du temps et de figer la R de la session, mais seulement si plus tôt dans la séance, certaines (arbitraire) system()
des appels ont été effectués. La vidéo et le script ci-dessous illustrent le problème plus clairement.
Quelques trucs que j'ai essayé sans succès:
- Désactiver l'antivirus/pare-feu.
- Attendre quelques secondes entre l'appelant
system
etmakePSOCKcluser
. - À l'aide de différents appels système.
Comment aurais-je préciser cela? Ici, la vidéo et le script utilisé dans la vidéo est:
cmd_exists <- function(command){
iswin <- identical(.Platform$OS.type, "windows");
if(iswin){
test <- suppressWarnings(try(system(command, intern=TRUE, ignore.stdout=TRUE, ignore.stderr=TRUE, show.output.on.console=FALSE), silent=TRUE));
} else {
test <- suppressWarnings(try(system(command, intern=TRUE, ignore.stdout=TRUE, ignore.stderr=TRUE), silent=TRUE));
}
!is(test, "try-error")
}
options(hasgit = cmd_exists("git --version"));
options(haspandoc = cmd_exists("pandoc --version"));
options(hastex = cmd_exists("texi2dvi --version"));
cluster <- parallel::makePSOCKcluster(1);