r语言 - 将来等待在单核计算机上执行



我有 2 台机器,具有相同版本的 Ubuntu (16.04(、R (3.4.4( 和未来的软件包 (1.10.0(。我正在运行下面的代码,它实现了异步编程

tic()
library(future)
plan(multisession)
mehAsync = function(){
future::future({
Sys.sleep(5)
return('meh')
})
}
out = mehAsync()
what = then(out,function(value){(value)})
toc()

预期的行为是执行将几乎立即结束,留下一个挂起的承诺。在一台机器中,这种情况会发生,执行立即发生。但是,在我拥有的另一台机器中,执行等待 mehAsync 函数执行,在 5 秒后完成。

如前所述,两台机器几乎相同。它们之间的主要区别在于较慢的是单核机器。但是,根据我的理解,multisession计划不应该需要多个内核。刚好有足够的资源来打开计算机具有的新 R 会话。

这里的具体问题是:

  • 我对预期行为的理解是错误的,这对于单核机器来说是正常的吗?
  • 我没有考虑的其他哪些因素可能会影响这种行为?
  • 我如何调试此问题,因为没有错误/警告消息,并且我自己和其他人无法在独立机器中复制?

注意:在尝试调查另一个问题时出现了这个问题

multisession计划的默认选项将workers参数设置为在单核计算机中availableCores()。这意味着如果在使用plan时不覆盖参数,则内核的数量确实很重要。

行为

plan(multisession,workers=2)

解决了这个问题

相关内容

  • 没有找到相关文章

最新更新