微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

R foreach 循环中的内存溢出不需要在内存中存储任何内容

如何解决R foreach 循环中的内存溢出不需要在内存中存储任何内容

我正在 R 中运行这段简单的代码,使用 foreach 为每个进程写入同一个文件。每次迭代向每个文件附加一行。每次迭代不存储变量,但内存使用量不断增加,直到溢出。怎么了?

  cores <- parallel::detectCores() - 1
  cl <- parallel::makeCluster(cores,outfile = "")
  doParallel::registerDoParallel(cl)  

  foreach::foreach(x = 1:length(file.paths)) %dopar% {
    
    my.file <- file.paths[x]
    load(my.file)
    # List my.list is loaded
    
    if (!my.list$is_0) {
      
      # loop entry condition is met >99.99% of the time
      my.df <- compute.values(my.list)
      # my.df is a 1-row data frame

      # one unique output file per process
      o_file <- paste0("out-",Sys.getpid(),".csv")

      # The row is appended to the output file
      data.table::fwrite(
        x         = my.df,file      = o_file,sep       = ",",na        = "",quote     = FALSE,append    = TRUE,col.names = FALSE,row.names = FALSE
      )
    }
  }
  
  # Stop parallelization
  parallel::stopCluster(cl)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。