R中使用foreach时清理内存

foreach能较大的提高计算速度,但是R不会自动清理内存,导致服务器内存经常占用过高,因此使用时需要及时清理内存,以如下例子所示。
我需要读取一批excel文件,在运行下面的代码前,经过4次测试,Rstudio的内存情况是这样的(Mb):
232, 237, 231.8, 230.2
在执行下面的代码后

qcc_result <- foreach(i=1:length(result_files), .combine=rbind) %dopar% {
    require(readxl)
    f_path <- paste0("test/", result_files[i])
    # gc()
    return(read_xls(f_path, skip = 1, col_names = T))
}
gc() # 释放内存

内存占用为 397.6。

qcc_result <- foreach(i=1:length(result_files), .combine=rbind) %dopar% {
    require(readxl)
    f_path <- paste0("test/", result_files[i])
    gc() # 释放内存
    return(read_xls(f_path, skip = 1, col_names = T))
}
gc()  # 释放内存

执行了5次,执行完成后,内存使用分别为 352.9, 346, 373.1,369.0,346。显然,foreach每次执行时,本身也会占用内存,而且用完以后也不会释放,因此在foreach代码块中使用gc()释放内存后,也会减少使用的内存。

注意,gc()的位置要在return之前。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值