gpt4 book ai didi

r - R中的并行处理函数(如future_apply)是否有提前终止选项?

转载 作者:行者123 更新时间:2023-12-05 07:03:00 32 4
gpt4 key购买 nike

我在我的 R 代码中使用 future.apply 包对一个优化问题进行 100 次蒙特卡洛模拟并行处理。

现在让我们假设每次模拟的优化输出为 True(找到最佳解决方案)或 False(未找到最佳解决方案)。我能否设置条件,以便如果前 10 次模拟返回 False,则并行过程将终止?

编辑:我在下面包含一个小示例 - 我可以在运行 10 次后终止它吗?

library(future.apply)

plan(multiprocess)
outputs <- future_lapply(1:100, function(i){
temp <- FALSE
return(temp)
})

最佳答案

您可以使用一个中间文件,在其中写入每次模拟的结果。每次启动新模拟时,您检查前 10 个结果是否为 FALSE,如果是,您要求线程自行终止。 future_lapply() 必须在 try() 包装器中使用,因为该函数显然会失败。

library(future.apply)
library(tools)

func <- function(i){
tbl_results <- read.csv("results.csv")
results <- tbl_results[, 2]

if(length(results) >= 10 & all(results[1:10] == FALSE)) pskill(Sys.getpid())

result <- FALSE

cat(paste0(i, ",", result, "\n"), file = "results.csv", append = TRUE)
return(result)
}


plan(multiprocess)
cat("input,result\n", file = "results.csv")
outputs <- try({future_lapply(1:100, func)}, silent = TRUE)

if(!is.list(outputs)) stop("10 first simulations returned FALSE")

关于r - R中的并行处理函数(如future_apply)是否有提前终止选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63385762/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com