R中的并行和多核处理

8
这是我认为R语言极限的应用,但还是试试吧...
我在R中进行一些大量处理,编写了一个函数来完成单个调用中的所有工作。然而,我想使用多个核心进行线程或利用。
我看过Parallel包,但它已被弃用。我希望能够将函数作为新线程调用。
我了解并行计算的复杂性,并且知道这不是世界上最容易的事情,但如果有人知道一些有用的软件包或我可能忽略的任何内容,我会很感激。
谢谢!
1个回答

20

multicore包已被弃用,建议使用parallel。请查看parallel包中mclapply函数的文档:这是在并行执行函数时最简单的方法。它与lapply非常相似,但具有一些新的可选参数:

library(parallel)
myfun <- function(i) { Sys.sleep(1); i }
mclapply(1:8, myfun, mc.cores=4)

请注意,mclapply使用进程而不是线程,在Windows上不支持并行执行。对于Windows,您应该看一下parLapply,它也在parallel中。它与lapply类似,但需要一个集群对象作为第一个参数。这里是同样的例子,但它可以在任何平台上运行:

library(parallel)
cl <- makePSOCKcluster(4)
myfun <- function(i) { Sys.sleep(1); i }
parLapply(cl, 1:8, myfun)
stopCluster(cl)

但是像并行包中的parLapply这样的函数在Windows上确实可以并行工作,只是使用它需要比mclapply更多的设置。 - Greg Snow
1
@GregSnow,我终于理解了你的评论,希望我的回答有所改善。谢谢。 - Steve Weston

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接