Я периодически получаю следующую ошибку при использовании Rscript
для вызова mclapply
из командной строки:
Error in sendMaster(try(lapply(X = S, FUN = FUN, ...), silent = TRUE)) :
write error, closing pipe to the master
Если я запускаю тот же самый код в R Studio или из интерактивного сеанса R, я не получаю ошибку. Эта ошибка появляется в различных контекстах: от очень больших заданий, где каждый рабочий должен вернуть очень большой объект, до небольших заданий. Я также пытался отключить prescheduling
, но все равно выдает ошибку. Иногда это уйдет, если я уменьшу количество потоков в аргументе mc.cores
. Я использую Microsoft R Open в Ubuntu 18.04.1. Он также появился в Ubuntu 16.04. Одна вещь, которую я не пробовал, — это запускать код в стандартном R вместо MRO.
Вот мой Rscript -e 'sessionInfo()'
:
R version 3.5.1 (2018-07-02)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 18.04.1 LTS
Matrix products: default
BLAS: /opt/microsoft/ropen/3.5.1/lib64/R/lib/libRblas.so
LAPACK: /opt/microsoft/ropen/3.5.1/lib64/R/lib/libRlapack.so
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
[3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
[5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8
[7] LC_PAPER=en_US.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] RevoUtils_11.0.1 RevoUtilsMath_11.0.0
loaded via a namespace (and not attached):
[1] compiler_3.5.1
Есть идеи? Кто-нибудь еще сталкивался с чем-то подобным? Я извиняюсь за то, что у меня нет воспроизводимого примера, но данные/код, в которых я столкнулся с ошибкой, непрактично велики, чтобы делиться ими, и я не смог воспроизвести ошибку в других контекстах. Кажется, это просто происходит случайно.
mclapply
, для этого требуются очень специфические обстоятельства). Тем не менее, вы молодец, опубликовав свою конфигурацию R (но не запускайте ее в чистом сеансе, запустите ее в проблемном сеансе, чтобы показать, какие другие пакеты подключены)! - person Konrad Rudolph   schedule 23.08.2018trace(parallel:::sendMaster, at = 3L, tracer = quote({ str(list(what = what)) }))
в начало сценария и перезапустите его. Это должно дать нам представление о размере данных, которые вызывают эту ошибку. - person HenrikB   schedule 23.08.2018