如何解决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 举报,一经查实,本站将立刻删除。