我对所有 "embarrassingly parallel" 的计算使用 mclapply。我发现它干净易用,当参数
我已经看到在各种包中使用了
mc.cores = 1
和mc.preschedule = TRUE
时,我可以在mclapply
内的函数中插入browser()
,就像在普通的 R 中一样逐行调试。这有助于更快地将代码投入生产。
foreach
相对于 mclapply
有什么优势?我是否应该考虑编写 foreach 代码?
如果我理解正确,两者都可以使用并行计算(允许分叉)的multicore
方法,我喜欢出于性能原因使用它。我已经看到在各种包中使用了
foreach
,并且已经阅读了基础知识,但老实说我没有找到它很容易使用。我也无法弄清楚如何使foreach
函数调用中的browser()
工作。(是的,我已经阅读了这个线程browser mode with foreach %dopar%,但没帮助我正确使浏览器工作)。
foreach
而不是parallel
的一个原因是,简单地说mclapply
在 Windows 系统下默认情况下不起作用(而且很多用户仍在使用 Windows)。尽管我可以进行操作系统检测,但正如你所注意到的,这也需要对函数进行稍微不同的实现。 - FM Kerckhof