[R語言]foreach和doParallel包實現多個數據庫同時查詢


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)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM