问题标签 [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 - 使用带有检查点的 foreach 时未找到 R 包的内部函数
这是这个问题的后续问题:How to set .libPaths (checkpoint) on workers when running parallel computing in R
根据答案,我将以下代码(简化示例)放入名为“test1”的 R 包中:
然后我调用checkpoint::checkpoint("2018-07-24")
并将包安装到检查点库中。然后下面的代码产生了这个错误:
工作人员使用的初始库路径(PID 16880):-'C:/Programme/R-3.5.1/library'
工作人员使用的库路径(PID 16880):-'.../.checkpoint/2018-07-24/lib/x86_64-w64-mingw32/3.5.1'
工作人员使用的初始库路径(PID 3916):-'C:/Programme/R-3.5.1/library'
工作人员使用的库路径(PID 3916):-'.../.checkpoint/2018-07-24/lib/x86_64-w64-mingw32/3.5.1'
{ 中的错误:任务 1 失败 - “找不到函数“h””
test1:::g()
当我在通话中明确调用foreach
时,它可以工作。有人可以解释一下,为什么我必须在 foreach 循环中显式调用我自己的包的函数:::
?看起来g()
好像找到了,但h()
后来没有?
r - R包未来:计划()的初始化失败
尝试此代码
我得到的错误:Initialization of plan() failed, because the test future used for validation failed. The reason was: Unexpected result (of class ‘NULL’ != ‘FutureResult’) retrieved for ClusterFuture future (label = ‘<none>’, expression = ‘NA’)
。
我试图重现我的真实问题的示例的解释:
- 我在两个步骤中循环了很多次(这里是 5 次)
- 第一步很容易与 foreach 并行
- 第二步不容易并行化,依赖于第一步
所以我的想法是在所有可用集群上并行化第一步,并仅使用一个集群异步运行第二步。在此异步作业完成之前,此集群将不再可用。然后下一步将减少一个可用的集群,依此类推。当第一步没有可用的集群时,它会等待一些异步作业完成并释放一些集群。
r - R 未来、doSNOW、并行和 foreach 用于异步执行
我正在努力为外部程序使用 R 并行异步执行脚本选择合适的包(R 脚本还提供输入和聚合输出),我知道四个流行的包:future、doSNOW、parallel 和 foreach,但是为此选择哪个任务 ?我有大约 30 个独立任务,需要在 Windows 上的本地计算机上并行运行其中的 5 个
r - 将来指定多进程计划的惯用、灵活的方式是什么?
我刚刚遇到了 R 包 furrr 和 future。我很想用它们来编写灵活的代码,如果在运行 Windows 或 OSX 的机器上可用,这些代码将使用多个内核。我希望默认的“可用”核心数量类似于parallel::detectCores()-1,
而不是detectCores().
似乎plan(multiprocess)
是几乎可以做到这一点的流线型、惯用的方式,但它默认使用机器上的所有核心。我遇到了更明确的方式来指定“计划”。主要使用默认行为的惯用方法是什么plan(multiprocess)
,但也将核心数量限制为比返回的任何数量少 1 detectCores()
?
编辑
根据上面@HernikB 的评论,我相信这个问题的合理答案将是options(future.plan="multiprocess",mc.cores = parallel::detectCores() - 1L)
.
编辑
我发现这种方法经常不使用多进程计划(或至少不与 并行future_map_dfr
),而它似乎可以。相比之下
nc<-detectCores()-1
plan(strategy=multiprocess, workers=nc)
似乎让它并行。留下这个问题没有答案。
r - 有没有办法用`future.apply::future_apply`手动附加包和全局变量
我正在使用 R 的优秀未来包。在文档中它提到%global%
并%packages%
分配全局变量和包以在未来环境中进行评估。但那些似乎只适用于%<-%
.
我的问题是:是否也可以这样做future_apply
。我试过了
它不起作用
r - `future.apply::future_apply()` 中的 `purrr::map()` 之类的函数是否也在并行运行?
抱歉,如果这些是愚蠢的问题,但我对并行处理在实践中的工作原理几乎一无所知。
我的问题是:
- Q1。类似 inside 的函数是否purrr::map()
也future.apply::future_apply()
并行运行?
- Q2。如果我在函数furrr::future_map()
内部运行会发生什么future.apply()
?
- 第三季度。假设我做了上述,我会plan(multiprocess)
在之前加入另一个电话furrr::future_map()
吗?
r - 在同一个对象上并行化多个函数
感谢DAVID SCHOCH,我利用他的功能并稍作修改以创建以下内容。它工作得很好。
现在,我只需要计算这些变量,即在图形对象 H 上并行运行函数,可能使用 purrr 或 furrr,以更快地运行。我的真实数据很大,还有 30 多个函数。输出应该与下面代码最后一行中显示的 H_indices 相同。
r - 如何在 tidygraph 对象上使用 furrr 应用映射函数?
使用 furrr 对 tidygraph 中心性函数进行并行计算会引发错误:
“mutate_impl(.data, dots) 中的错误:评估错误:不应直接调用此函数。”
这是我的代码:
我应该如何解决这个问题?
r - furrr 没有找到自己的包
我目前正在开发一个包,假设它被称为 myPack。我有一个名为 myFunc1 的函数和另一个名为 myFunc2 的函数,它看起来像这样:
现在,如果我在不并行时调用 myFunc2,它会起作用。但是,如果我用 parallel = TRUE 调用它,我会收到以下错误:
有谁知道为什么 myFunc2 在顺序模式下工作,而不是并行工作,以及如何阻止此错误出现?
可重现的例子:
(注意:这不是完整的功能,但它基本上是它在缩短版本中所做的)
r - R中的异步编程
概述
我正在编写一个程序(在 R 中),它在某些指定时间进行 API 调用。API 调用需要一段时间,但我需要计时器(主循环)在进行 API 调用时继续计数。为此,我需要将 API 调用“外包”给另一个 CPU 线程。我相信这是可能的,并且已经研究了future
和promises
包,但还没有找到解决方案。
可重现的例子
让我们运行一个for
从 0 计数到 100 的循环。当计数器 ( i
) 达到 50 时,它必须完成一个资源密集型过程(调用函数sampler
,该函数对 100 万个正态分布进行 10,000 次采样以占用计算空间)。sampler()
希望计数器在另一个线程上工作时继续计数。