Я пишу пакет R с параллельным кодом
anpl <- function(..., num_cores = 1, ...)
...
theta_transpose <- parallel::mcmapply(anpl_single, 1:n_bootstrap,
MoreArgs = more_args, mc.cores = num_cores)
...
, где anpl
обозначает адаптивное непараметрическое обучение.
Я проверяю код в tests/testthat/test_anpl.R
:
test_that("Adaptive non-parametric learning with posterior samples works", {
...
anpl_samples <- anpl(..., num_cores = 2)
...
}
Звонок devtools::check()
отлично работает:
── R CMD check results ─────────────────────────── PosteriorBootstrap 0.0.1 ────
Duration: 1m 15.1s
0 errors ✔ | 0 warnings ✔ | 0 notes ✔
Вызов devtools::test()
показывает ошибку при распараллеливании:
══ Results ═════════════════════════════════════════════════════════════════════
Duration: 59.5 s
OK: 21
Failed: 0
Warnings: 0
Skipped: 0
Error while shutting down parallel: unable to terminate some child processes
Я обнаружил эту проблему , относящуюся к слерму, и все еще остается открытой, и эту проблему , относящуюся к processx
, где для обходного пути используется порядок вызова parallel
и processx
и здесь не применяется.
В чем проблема и как ее исправить?