嗨,我是并行编程的新手。我对foreach
循环和doFuture
.
我有 100 个内核和 100 个类似的任务(下面是示例代码)。我相信 -foreach
为每个核心(工人)分配一项任务,我应该几乎同时获得所有输出。
但是,当我将 100 个任务(每个需要一个小时)分配给 100 个内核时。我预计 1 小时后的所有结果。但我在一小时后只发现了 44 个结果,然后在下一小时后又发现了 44 个结果,依此类推。
Q1。我的方法可能有什么问题?
Q2。有没有办法可视化主人到工人的任务分配?
Q3。如何确保将一项任务分配给每个工人?
library(doFuture)
library(foreach)
library(dplyr)
# parallel programming
registerDoFuture()
plan(cluster, workers = 100)
# number of tasks
num_tasks <- 100
# foreach loop
result <- foreach(task = 1:num_tasks,
.combine = rbind) %dopar%
{
# to slow down each task
Sys.sleep(2)
res <- tibble(x = task * task)
}