【发布时间】:2016-11-13 21:03:16
【问题描述】:
让我困惑的是:
当您使用 foreach 调度内容同质但处理时间不同(事前未知)的任务序列时,foreach 究竟是如何顺序处理这些令人尴尬的并行任务的?
例如,我注册了 4 个线程 registerDoMC(cores=4),我有 10 个任务,结果第 4 和第 5 个任务都比其他所有任务的总和更长。那么第一批显然是第1,第2,第3和第4。 1、2、3完成后,foreach究竟是如何依次分配其他任务的呢?那是随机的(从我的观察看来是这样)?如果事实证明某些任务需要更长的时间来处理,那么加快速度的好做法是什么?
很抱歉没有提供具体示例,因为我的实际项目/代码涉及更多...
非常感谢任何经验/指导/指针!
【问题讨论】:
-
如果我没记错的话,它会拆分任务并将它们发送到实例进行处理。例如。任务向量 1:6 将被分成 1,2,3 和 4,5,6 并发送给两个工人。如果使用负载平衡,这可能会超出窗口并且以不同的方式进行调度。希望有人能够插话并提供更完整的答案。
标签: r multithreading foreach parallel-processing