首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R,mclapply,vs

R,mclapply,vs
EN

Stack Overflow用户
提问于 2017-06-28 14:55:49
回答 2查看 2.4K关注 0票数 20

我在所有的“令人尴尬的并行”计算中使用mclapply。我发现它干净易用,当参数mc.cores = 1mc.preschedule = TRUE时,我可以在mclapply中插入browser()并逐行调试,就像在普通的R中一样--这对于更快地实现代码的生成是一个巨大的帮助。

foreach提供的mclapply没有提供什么?有什么原因我应该考虑写前瞻代码前进吗?

如果我正确理解,两种方法都可以使用multicore方法进行并行计算(允许分叉),出于性能原因,我喜欢使用这种方法。

我已经看到foreach在不同的包中被使用,并且阅读了它的基本知识,但坦率地说,我发现它并不容易使用。我也想不出如何让browser()foreach函数调用中工作。(是的,我读过这个线程browser mode with foreach %dopar%,但没有帮助我使浏览器正常工作)。

EN

回答 2

Stack Overflow用户

发布于 2020-11-01 16:49:44

这个问题几乎与这里描述的问题相同:Understanding the differences between mclapply and parLapply in R

mclapply正在为每个工作进程(线程/核心)在调用mclapply时创建主进程的克隆,保证可再现性。不幸的是,这在Windows上是不可能的,因为与多核相比,foreachparLapply总是使用多会话并行。

当将parLapplyforeach%dopar%一起使用时,通常需要执行以下附加步骤:创建PSOCK集群,根据需要注册集群,在集群工作人员上加载必要的包,将必要的数据和函数导出到集群工作人员的全局环境。

这就是为什么foreach有像.packages.export这样的参数,使我们能够在会话之间分发所需的一切。

future包提供了多进程和多会话处理https://cran.r-project.org/web/packages/future/vignettes/future-1-overview.html之间区别的详细信息。

票数 2
EN

Stack Overflow用户

发布于 2020-07-18 01:03:30

正如Steve (“foreach”的作者)所说的那样,使用foreachdoParallel作为后端,您可以初始化工作人员。这可以帮助每个工作人员更有效地设置数据库连接一次,而不是每任务一次。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44806048

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档