• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

[R语言]foreach和doParallel包实现多个数据库同时查询

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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)

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
R语言——拍拍贷利率数据分析发布时间:2022-07-18
下一篇:
R语言简介与案例发布时间:2022-07-18
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap