【发布时间】:2017-12-02 00:40:53
【问题描述】:
我使用 mclapply 进行所有“令人尴尬的并行”计算。我发现它干净且易于使用,当参数 mc.cores = 1 和 mc.preschedule = TRUE 我可以在 mclapply 内的函数中插入 browser() 并像在常规 R 中一样逐行调试。这对获取有很大帮助将代码更快地投入生产。
foreach 提供哪些 mclapply 不提供的功能?我有理由考虑编写 foreach 代码吗?
如果我理解正确,两者都可以使用multicore 方法进行并行计算(允许分叉),出于性能原因,我喜欢使用这种方法。
我已经看到foreach 被用于各种包中,并且已经阅读了它的基础知识,但坦率地说,我觉得它并不容易使用。我也无法弄清楚如何让browser() 在foreach 函数调用中工作。 (是的,我已阅读此主题 browser mode with foreach %dopar%,但没有帮助我让浏览器正常工作)。
【问题讨论】:
-
我们有时使用
foreach而不是parallel的一个原因是mclapply在默认情况下在Windows 下不起作用(许多用户仍在使用Windows)。虽然我可以执行操作系统检测,但正如您所注意到的,它还需要实现一些不同的功能。