很久很久没更新了,最近遇到了如题所示的问题
- 内存不足:
> memory.limit()
[1] 16033
#Windows上才有,Mac上是Inf
#这。这才16M啊,怪不得
#设置为16G
> memory.limit(16000000)
[1] 1.6e+07
然后安静的让他跑着,回去睡觉了。但是。 一个核跑了一夜也没跑完
然后查了一下有parallel包,
> library(parallel)
#R自带的一个包
#首先检查电脑有几个核心
> detectCores()
[1] 12
> system.time({
+ a <- 1:1e7
+ b <- lapply(a, function(num) {sqrt(num)})
+ })
用户 系统 流逝
9.671 0.255 9.946
#设置可利用的核心数
> cl <- makeCluster(4)
> system.time({
+ a <- 1:1e7
+ b <- parLapply(cl, a, function(num) {sqrt(num)})
+ })
用户 系统 流逝
1.951 0.320 5.099
#最后记得关掉多线程
> stopCluster()
加速显而易见,但是也不是成比例的,任务分发以及各核心之间转换也需要时间
#设置可利用的核心数
c l <- makeCluster(4)
SQMobjs <- parLapply(cl, samples, loadSQM)
#第一个参数是核心数,第二个参数是和lapply一样的,作为第三个参数-函数的实参。第三个函数可以自己编写,也可以外部library一下
#这里loadSQM就是外部的函数
fine, 焦虑。做实验去
网友评论