并行循环内的进度条?

问题描述 投票:0回答:1

我有一个并行的 for 循环,需要一段时间,所以我想要一个进度条。我似乎无法让任何“典型”、txtProgressBar 或进度库栏在循环内运行时实际输出任何内容。我在这里缺少什么?

results <- foreach(alpha_value = alpha_seq, .packages = c("glmnet")) %dopar% {
  # Set the seed for inside the parallel loop
  set.seed(1024)
  # Fit the elastic net model using cross-validation
  cv_model <- cv.glmnet(feature_vars, 
                        target_var,
                        nfolds = 3,
                        alpha = alpha_value, 
                        family = "gaussian")
  
  # Capture R-squared
  lambda_index <- which(cv_model$lambda == cv_model$lambda.1se)
  r_squared <- cv_model$glmnet.fit$dev.ratio[lambda_index]
  
  # Capture Mean Squared Error  
  mse <- ifelse(is.na(cv_model$cvm[cv_model$lambda == cv_model$lambda.1se]) | 
                  is.null(cv_model$cvm[cv_model$lambda == cv_model$lambda.1se]),
                NA, 
                cv_model$cvm[cv_model$lambda == cv_model$lambda.1se])
  
  # Return results for this iteration
  list(alpha_value = alpha_value, r_squared = r_squared, mse = mse)
}

我尝试过 txtProgressBar 和 Progress 库函数,我没有任何语法错误,并且它们在循环的并行版本之外工作。我看过其他一些讨论 Progressr 的类似帖子,但他们似乎没有提供解决方案。

r foreach parallel-processing
1个回答
0
投票
如果您使用

Futureverse 后端,progressr 包可与并行处理配合使用。有关示例,请参阅 https://progressr.futureverse.org/#foreach-with-dofuture

© www.soinside.com 2019 - 2024. All rights reserved.