当前位置: 首页 > article >正文

R 语言 | future 包,非阻塞的执行耗时脚本

目的:有一段代码,后面暂时用不到,但是又很耗时,占了当前R session,难道只能等半个小时,等到它结束才能画图?

可以使用R多线程,在支线中执行耗时任务,同时不阻塞当前R进程,可以继续干活。

# 第一步,开启多线程。只能linux系统,必须开多线程
library(future)
plan(multisession, workers = 10) # 设置为多进程模式

# 第二部:定义耗时任务
save_task <- future({
 pid=Sys.getpid()
  print( paste0("Start ...", pid) )
  #save.image("before.RData")
  Sys.sleep(10) # 模拟耗时1小时
  # 这里保存Rds文件,可能需要花费几十分钟到2个小时
 # save.image("end.RData")
  print( paste0("End...", pid) )
  100 #最后一行是线程的返回值,类似函数的感觉。
})

# 第三步,继续执行其他任务
# 在任务运行时,可以继续执行其他代码,不用等待耗时任务结束
print("正在后台保存文件,可以继续执行其他任务...")

而且可以随时查看支线是否结束,该命令是阻塞的:

> value(save_task )
[1] "Start ...1389"
[1] "End...1389"

http://www.kler.cn/a/513113.html

相关文章:

  • 1月21日星期二今日早报简报微语报早读
  • Python 脚本-扫描当前目录和所有子目录并显示它们的大小。
  • BH1750使用程序
  • 【useContext Hook】解决组件树层级较深时props逐级传递问题
  • three.js实现裸眼双目平行立体视觉
  • 直驱式风电储能制氢仿真模型matlab/simulink
  • C语言之饭店外卖信息管理系统
  • RabbitMQ1-消息队列
  • npm install卡住执行不下去的问题
  • GAN - 生成对抗网络:生成新的数据样本
  • 高等数学学习笔记 ☞ 定积分与积分公式
  • 使用repo下载android源码,Ubuntu安装repo
  • pdf与ofd的区别详细对比
  • vue+arcgis api for js实现地图测距的分段统计线段长度
  • SQLmap 自动注入 -02
  • 【服务器报错】libGL.so.1: cannot open shared object file:
  • 记录一次排查服务器硬盘资源不足的过程
  • OFD 套版生成原理与 C# 实现详解
  • PyQt 异步任务 多线程的几种方案
  • linux-NFS网络共享存储服务配置
  • 深度学习进展
  • 档案事业与数据要素之间有什么关系?
  • vue3组件传值具体使用
  • AI软件栈:中间表示
  • MySQL 8.4及以上版本压缩包安装 windows
  • Java中的几个元老 Object Class 和 @Retention