параллельная ошибка при завершении дочерних процессов с помощью devtools :: test (), но не с помощью devtools :: check () - PullRequest
1 голос
/ 22 мая 2019

Я пишу пакет 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 и здесь не применяется.

В чем проблема и как ее исправить?

...