0

嗨,我是并行编程的新手。我对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)
  }

4

0 回答 0