问题标签 [r-future]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
r - R未来,检查是否在单独的窗口中解决
所以我想知道你是否可以不断检查未来是否仍在运行。基本上有一个
while (!resolved(future)) {print("still running")}
在一个单独的窗口中,以不阻止主会话。RStudio 工作有一个简洁的界面,我想要类似的东西,但对于未来。
r - R中的并行编程问题
我正在尝试在 R 中使用foreach
和进行并行编程future.apply
。
下面是一个示例代码。
问题 1. - 由于任务数量很大,每个任务生成随机数和计算均值的速度非常快。所以为了尽量减少master和worker之间的通信开销,我希望一次给worker多个任务,让他们一起返回结果。
a)foreach
正在工作,但我怎样才能将任务分成 4 个块foreach
?
b) 为什么部分代码有错误future_lapply
,如何将任务分成 4 个块?(is.vector(X) 中的错误:缺少参数“X”,没有默认值)
………………………………………………………………………………………………………………………………………………
问题 2. - 下面的代码 - 我改变了n
和mean
。 foreach
正在工作但future_lapply
不工作。
r - foreach 以哪个顺序将任务分配给工作人员
嗨,我是并行编程的新手。我对foreach
循环和doFuture
.
我有 100 个内核和 100 个类似的任务(下面是示例代码)。我相信 -foreach
为每个核心(工人)分配一项任务,我应该几乎同时获得所有输出。
但是,当我将 100 个任务(每个需要一个小时)分配给 100 个内核时。我预计 1 小时后的所有结果。但我在一小时后只发现了 44 个结果,然后在下一小时后又发现了 44 个结果,依此类推。
Q1。我的方法可能有什么问题?
Q2。有没有办法可视化主人到工人的任务分配?
Q3。如何确保将一项任务分配给每个工人?
r - R 未来多会话错误:values() 将来会失效(>= 1.20.0)。改用 value()
我成功使用了一个函数future
multisession
,但是future
收到以下错误的更新,我还没有弄清楚如何解决:
错误:values() 将来会失效(>= 1.20.0)。请改用 value()。
请看下面的例子(我没有使用 values(),但仍然得到错误):
提前致谢
parallel-processing - 我可以手动将对象和库导出到 mlr3 中的未来多会话工作人员吗
mlr3 有一个简洁的并行启动按钮,通过future::plan()
.
但是,当我想自定义涉及外部对象和库的管道运算符时,工作人员将以object not found
错误结束。
我想知道是否有手动方式将这些对象导出给future
工人。谢谢!
r - 如何跨多个 slurm 节点并行化 future_pmap()
我可以访问一个具有许多节点的大型计算集群,每个节点都有 >16 个内核,运行 Slurm 20.11.3。我想使用furrr::future_pmap()
. 我可以在单个节点上跨多个内核并行化,但我无法找出正确的语法来利用多个节点上的内核。请参阅此相关问题。
这是一个可重现的示例,我创建了一个休眠 5 秒并返回开始时间、结束时间和节点名称的函数。
我以salloc --nodes=4 --ntasks=64
交互方式使用并运行上述 R 脚本来运行该作业。
该脚本在大约 20 秒内运行,并为所有行返回相同的主机名,这表明它在一个节点上同时运行 16 次迭代,而不是按预期在 4 个节点上同时运行 64 次迭代。我应该如何更改plan()
语法以便可以利用多个节点?
编辑:我还尝试了其他一些事情:
- 我替换
multicore
为multisession
,但没有看到输出有任何差异。 - 我替换了
plan(list(...))
,plan(cluster(workers = availableWorkers())
但它只是挂起。
r - 如何在 R 管道工中将 future_promise 与 memoise 结合起来
我正在使用 R 包制作 API plumber
。这个 API 中的一些端点会从记忆化中受益,所以我也使用了这个memoise
包。将两者结合起来非常简单,如本博文所示。我将在这篇文章的示例上建立我的代表。
所以现在,我想让我的 API 能够处理并发调用。为此,我将使用该promises
包,如本博文中所示。结合plumber
起来promises
也很简单:
我重新启动 API,然后我可以调用这个新端点:
现在我想添加一个混合所有内容的端点(plumber
和memoise
)promises
。
我重新启动 API,然后调用它:
我试图与future_promise
's 的envir
论点混在一起,但没有成功。我也试过这个:
我重新启动 API,然后调用它:
它返回正确的结果,并且该部分按预期工作(在端点调用中future_promise
添加 10s 后我可以看到,然后从另一个 R 会话调用另一个端点),但该部分似乎不起作用(我可以看到在函数中添加 10s后,两次调用最后一个端点并不会使其更快)。Sys.sleep
future_promise
future_promise
memoise
Sys.sleep
add
编辑:如果我将它与文件系统记忆结合起来,这个解决方案似乎有效:
但它看起来确实不是一个干净的解决方案。
因此,由于这是一篇很长的帖子,我会清楚地说明我的问题,以防我失去你:
有没有一种干净的方式来组合memoise::memoise
和promises::future_promise
在plumber
端点内?
r - 在执行多会话工作时,future_lapply 说一个包不存在,但是在运行 plan(sequential) 时它工作正常
当我尝试使用future_apply
with 时plan(multisession)
,它说我尝试使用的包不存在。当我使用它时plan(sequential)
,它工作正常。使用时我也遇到同样的错误plan(callr)
。
这是错误:
Error in loadNamespace(name): there is no package called 'fuzzyjoin'
谁能帮我找出解决方案或这里出了什么问题?
我不确定这是否与 future.apply 包或 future 或 globals 包有关,因为我知道它们也参与其中。
这是我的代码显示问题:
由reprex 包于 2022-01-28 创建(v2.0.1)
如果相关,我正在运行 R v4.0.3。
r - 在 R 未来调用中打印调试信息
我想在 R 未来调用中打印调试信息,以显示有关某些过程(例如复制文件)需要多长时间的信息。
我的期望:文件被复制,控制台输出带有来自jamba::printDebug
.
如果我直接调用该函数,我会获得有关 MultisessionFuture 的一些信息;只有当我检索到test
对象的值时,我才会得到时间戳。
该功能有没有办法立即将输出打印到控制台,或者至少在作业完成后自动打印输出?
r - 带有回调函数的后台while循环
我希望在 R 中实现以下模式,但运气不佳:
后台作业(无限 while 循环)将轮询 API 以检索检索结果。此函数必须将结果传递回主 R 会话。我最初认为这可能是一个函数,一旦将结果分配给全局变量,就会递归调用自身(这可能是错误的方法):
从 API 检索消息后,将生成一个长时间运行的数据处理任务(这可能需要 10 到 20 秒之间的任何时间)。我还没有完全弄清楚的一件事是如何在不同的 R 进程之间传递数据,我想像 Redis 这样的东西或者svSocket
需要参与。
现在,棘手的一点是让 API 知道(不时地)数据处理仍在积极进行,以避免重新发送消息。