R语言内存不足以及多线程问题

2020-11-24  本文已影响0人  kkkkkkang

很久很久没更新了,最近遇到了如题所示的问题

  1. 内存不足:
> 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, 焦虑。做实验去

上一篇 下一篇

猜你喜欢

热点阅读