R语言在进行数据库查询时,每执行一条语句,都会阻塞。直到查询语句返回结果之后,才会进行下一条语句。

为了能够实现同时对多个数据库进行查询,以节省顺序执行下来的时间,首先考虑通过多线程来进行数据库查询。

不过多数据库同时查询,多个结果合并起来过大的话,本地机器的内存可能是一个风险点,心里要对可能需要的内存有所把握。

R下进行多线程依赖与doParallel包和foreach包。

> install.packages('doParallel')

> install.packages('foreach')

> library(doParalled)

> library(foreach)
> library(RMySQL)
# 生成2个集群,多少个集群结合本地机器硬件配置和自己需要 
> cl <- makeCluster(2) # 注册多线程,个人理解,parallel包应该是声明在后端开启多核处理模式,让硬件准备环境,分配资源
> registerDoParallel(cl) # %dopar%是foreach包的语法格式,表示多线程运行.
# foreach默认返回一个list,也可以指定一个函数,在线程处理完成后直接对结果进行rbind,sum等组合操作。更多查看?foreach
> qdata <- foreach(i=1:2) %dopar% {
  if (i == 1) conn <- connectdb_1()
  else conn <- connectdb_2()

  re <- dbGetQuery(conn, query)
  dbDisconnect(conn)

  return(re)
}
# 关闭集群
> stopCluster(cl)

最新文章

  1. css 文本显示点点点
  2. 建造者模式与原型模式/builder模式与prototype模式/创建型模式
  3. jsp include指令
  4. Android 另类方法监听软键盘的弹出收起事件
  5. PacBio长reads的大基因组组装
  6. head tail 命令
  7. MYSQL开发技巧之行转列和列转行
  8. head first 设计模式读书笔记 之 策略模式
  9. OSX: 真的吗?Mac OS X重大漏洞 改时钟获系统最高权限
  10. 各大HotFix热补丁方案分析和比较
  11. Java学习之栈和堆的区别
  12. C/C++ 函数指针使用总结
  13. linux下mysql的启动与关闭
  14. springboot(二十三)Springboot2.X响应式编程
  15. 【C#】WebApi 添加过滤器,实现对请求参数和响应内容的日志记录
  16. C语言函数的存储类别
  17. java多线程和Calendar(日历)常用API
  18. 登录PeopleTools 提示ora-00942表视图不存在 select xxx from sysadm.psoprdefn
  19. Maven学习(六)maven使用中遇到的坑
  20. leetcode18&mdash;4Sum

热门文章

  1. Swift - 文本输入框(UITextField)
  2. tableView 局部刷新
  3. linux清除当前屏幕
  4. 谈谈Delphi中的类和对象1---介绍几个概念 &amp;&amp; 对象是一个地地道道的指针
  5. 数据结构之图 Part3 – 2 遍历
  6. 25条提高Visual Studio编码和调试效率的技巧
  7. 10gRAC运行srvctl报错error while loading shared libraries:
  8. C语言中的位操作(14)--反转比特位
  9. Win7下用IIS发布网站
  10. Activity活动