parallel::clusterExport - 非导出 library/package 函数
parallel::clusterExport - non exported library/package function
类似于this question
但是我如何 clusterExport
一个包的非导出函数到一个集群?由于某种原因,这在提交给 CRAN 之前通过了 my tests,但在生产中不起作用。显然,我想修复并重新提交给 CRAN。
library(imputeMulti)
library(parallel)
imputeMulti:::count_compare # function to be exported
nnodes <- 2L
cl <- parallel::makeCluster(nnodes)
parallel::clusterExport(cl, varlist= c("count_compare")) # fails -- but initially passed tests
parallel::clusterExport(cl, varlist= c("count_compare"), envir= as.environment("package:imputeMulti")) # also fails
我正在使用集群导出来避免 CRAN/R CMD 检查注释 "use of :::
in package"。显然,我可以导出 count_compare
,但这不是一个理想的选择。
感谢任何帮助!
添加测试信息:
devtools::test("imputeMulti", "count_levels")
Loading imputeMulti
Testing imputeMulti
int- count_levels works: ...............................
DONE ===========================================================================================================================================
根据我的测试和工作,我没有看到在非导出库函数上使用 parallel::clusterExport
。
以下有效,但结果为 1 R CMD 检查注释:
R CMD check results
0 errors | 0 warnings | 1 note
checking dependencies in R code ... NOTE
There are ::: calls to the package's namespace in its code. A package
almost never needs to use ::: for its own objects:
'count_compare'
count_compare <- imputeMulti:::count_compare
parallel::clusterExport(cl, varlist= c("count_compare"), envir= 1)
也许 library(testthat)
的开发人员之一可以提供有关 testthat
框架未捕获此问题的解决方案/更新。基于 Hadley's R-Journal article(pg7 使用期刊编号),我猜这与环境用于测试的方式有关。但是,这只是一个猜测。
注意:Hadley 已通过电子邮件确认这是 testthat
未命中的原因。
您可以使用对 clusterCall
的等效调用来执行此操作。
parallel::clusterCall(cl, assign, "count_compare", count_compare, envir = .GlobalEnv)
查看 clusterExport
的定义以验证这是在做同样的事情。
类似于this question
但是我如何 clusterExport
一个包的非导出函数到一个集群?由于某种原因,这在提交给 CRAN 之前通过了 my tests,但在生产中不起作用。显然,我想修复并重新提交给 CRAN。
library(imputeMulti)
library(parallel)
imputeMulti:::count_compare # function to be exported
nnodes <- 2L
cl <- parallel::makeCluster(nnodes)
parallel::clusterExport(cl, varlist= c("count_compare")) # fails -- but initially passed tests
parallel::clusterExport(cl, varlist= c("count_compare"), envir= as.environment("package:imputeMulti")) # also fails
我正在使用集群导出来避免 CRAN/R CMD 检查注释 "use of :::
in package"。显然,我可以导出 count_compare
,但这不是一个理想的选择。
感谢任何帮助!
添加测试信息:
devtools::test("imputeMulti", "count_levels")
Loading imputeMulti
Testing imputeMulti
int- count_levels works: ...............................
DONE ===========================================================================================================================================
根据我的测试和工作,我没有看到在非导出库函数上使用 parallel::clusterExport
。
以下有效,但结果为 1 R CMD 检查注释:
R CMD check results
0 errors | 0 warnings | 1 note
checking dependencies in R code ... NOTE
There are ::: calls to the package's namespace in its code. A package almost never needs to use ::: for its own objects: 'count_compare'
count_compare <- imputeMulti:::count_compare
parallel::clusterExport(cl, varlist= c("count_compare"), envir= 1)
也许 library(testthat)
的开发人员之一可以提供有关 testthat
框架未捕获此问题的解决方案/更新。基于 Hadley's R-Journal article(pg7 使用期刊编号),我猜这与环境用于测试的方式有关。但是,这只是一个猜测。
注意:Hadley 已通过电子邮件确认这是 testthat
未命中的原因。
您可以使用对 clusterCall
的等效调用来执行此操作。
parallel::clusterCall(cl, assign, "count_compare", count_compare, envir = .GlobalEnv)
查看 clusterExport
的定义以验证这是在做同样的事情。