R语言快速实现并行处理与共享内存

R语言 并行处理与共享内存

用R编程时,我们可能会需要并行(parallel)处理一个耗时很长的任务,有时又希望每个子任务都能访问和修改同一个变量,那这个变量就应放在共享内存(shared memory)中,下面我就简单介绍怎样快速实现:

并行处理

注:下面我讲的并行处理方法适用于Linux/Mac系统,不适用Windows系统,当然Window下可以实现R的并行处理,具体请另查资料。

R里面有很多可实现并行的包,我们这里使用R自带的基础包:parallel

library(parallel)

detectCores()
## [1] 8

载入包后可以看看自己的电脑有多少个核可以用,我的理解是你的电脑有多少个核,你就可以将任务最多分成多少个子任务同时处理。

a <- c(0, 0, 0, 0, 0)
f <- function(x) {
    a[1] <- a[1] + 1
    Sys.sleep(1)
}

system.time(
    for(i in 1:10){
        f(i)
    }
)
#   user  system elapsed 
#  0.003   0.000  10.013

上面我创建了一个每次执行需要1秒钟的函数f,如果我逐个处理,处理10次就需要10秒钟,当然处理一万次的话就需要10000秒钟。

mclapply

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值