我正在测试这个targets
包并且在自定义并行化方面遇到了问题。我的工作流程有两个步骤,我想将第一步并行化超过 4 个工作人员,第二步并行化超过 16 个工作人员。
我想知道我是否可以通过调用来解决问题tar_make_future()
,然后在调用中指定每个步骤需要多少工人tar_target
。我在下面有一个简单的示例,我希望data
使用 1 个工作人员执行该sums
步骤,以及使用 3 个工作人员执行该步骤。
library(targets)
tar_dir({
tar_script({
library(future)
library(future.callr)
library(dplyr)
plan(callr)
list(
# Goal: this step should execute with 1 worker
tar_target(
data,
data.frame(
x = seq_len(6),
id = rep(letters[seq_len(3)], each = 2)
) %>%
group_by(id) %>%
tar_group(),
iteration = "group"
),
# Goal: this step should execute with 3 workers, in parallel
tar_target(
sums,
sum(data$x),
pattern = map(data),
iteration = "vector"
)
)
})
tar_make_future()
})
我知道一种选择是在每个步骤中单独配置并行后端,然后调用tar_make()
以串行执行工作流。我很好奇我是否可以得到这种结果tar_make_future()
。