You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将future或promise的运行进度传回R主进程?

解决方案

你当前使用Windows 10 + RStudio环境,基于future的multisession策略配合promises实现异步任务,要实时上报循环进度的最简单方式是使用progressr包,它原生支持future生态的跨进程进度传递,不需要手动实现复杂的进程通信逻辑。

前置依赖安装

如果未安装对应包,先执行安装命令:

install.packages(c("progressr", "promises", "future"))

完整可运行代码

# 加载依赖
library(future)
library(promises)
library(progressr)

# 开启全局进度处理,RStudio环境会自动弹出原生进度条
handlers(global = TRUE)
# 可选配置:如果需要同时把进度打印到控制台,取消注释下一行即可
# handlers("progress", "console")

# 设置并行策略
plan(multisession)

# 定义异步任务
promise = future_promise({
  # 创建进度上报函数,配置总步数为100
  p <- progressor(steps = 100)
  for (i in 1:100) {
    Sys.sleep(1)
    # 上报当前进度,支持自定义展示的消息内容
    p(message = paste0("当前执行到第", i, "轮"), amount = 1)
  }
  i    
})

效果说明

  • RStudio环境下运行后会自动在界面右上角弹出进度条,实时显示当前进度消息
  • 所有进度信号会自动从工作进程传递回主进程,不需要额外处理跨进程通信逻辑
  • 任务结束后promise依然会正常返回100的结果,不影响原有逻辑

内容的提问来源于stack exchange,提问作者Max Yari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 12:06:02