- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是第一次开发非常小的包(并且 - 也许这在我的问题中很重要 - 想在 CRAN 上发布它)。这个包使用来自 data.table 和 base R 的函数。我想利用 data.table::setDTthreads() 函数提供的并行计算的好处。
当用户加载 data.table 包时,这个函数会立即调用,但我在开发包时没有这样做。我现在所做的只是:(1)在描述文件中,我已将 data.table 添加到导入字段; (2) 在 NAMESPACE 中我包含了 import(data.table)。
据我所知,这与 library(data.table) 不同,我不想要这个,因为我不想在用户加载我的包时加载 data.table。但我仍然想使用 data.table::setDTthreads() 函数。我应该在我的脚本中的哪里包含它?或者也许我正在使用它,因为我在 NAMESPACE 中包含了 import(data.table)?
我的包在 R/目录中只包含一个 .R 文件,功能很少,但只会导出一个对用户可见(所以其他的只是辅助函数)。让我们说,它看起来像这样:
#' roxygen2 skeleton
main_function <- function(x) {
x <- helper_function_1(x)
x
}
helper_function_1 <- function(x) {
x
}
我真正担心的是,当我在我的包中使用 data.table::setDTthreads() 时,它会对用户的环境产生影响,即我将启用并行计算并设置线程,而不仅仅是我的包中的函数,但是通常用于用户 session 。
最佳答案
很好的问题。
是的,它会影响用户环境中的所有 data.table 调用(包括来自其他包的调用),而不仅仅是来自您的包的调用。
一般建议不要在你的包中设置这个值,而是让用户知道他们可以自己设置它。如果你想在你的包中设置它,你应该很好地记录它。
请注意,50% 与 100% 通常是非常小的差异(可能小于 5%,甚至在共享环境中会变慢)所以我建议您衡量如果 yield 很小,是否真的值得搞乱用户环境.
例如检查这些时间
https://github.com/h2oai/db-benchmark/issues/202
您还可以填写功能请求,以便为单个包的调用设置线程数。通过检查调用的顶级环境在技术上是可能的。
关于r - 如何在我自己的包中使用 data.table::setDTthreads()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68142690/
我是第一次开发非常小的包(并且 - 也许这在我的问题中很重要 - 想在 CRAN 上发布它)。这个包使用来自 data.table 和 base R 的函数。我想利用 data.table::setD
我是一名优秀的程序员,十分优秀!