【问题标题】:Parallelizing a for loop which downloads information from Oracle in R并行化从 R 中的 Oracle 下载信息的 for 循环
【发布时间】:2018-11-15 16:36:39
【问题描述】:

我有一个可以像这样读取的函数

`For every period{

 run an specific query in the Oracle server
 and download the data

}`

我的问题是关于如何轻松创建运行 for 循环步骤的不同实例,因为大部分时间都用于单独发送查询,但如果我同时运行多个查询,它们不会变慢。

鉴于我一次可以使用 40 个线程,我的目标是运行 N 个不同的 R 会话,其中每个会话运行循环的一个步骤(以及一个查询本身)以加快工作速度

【问题讨论】:

  • 我可能错了,但我认为您最多只能并行化内核数。 40 听起来确实很多!

标签: sql r oracle for-loop parallel-processing


【解决方案1】:

您可以滚动自己的并行 for 循环:

library(future)
plan(multiprocess, workers = N)

res <- listenv::listenv()
for (period in periods) {
  res[[period]] %<-% {
    query_and_download(period)
  }
}
res <- as.list(res)

或使用并行 lapply 调用:

library(future.apply)
plan(multiprocess, workers = N)
res <- future_lapply(periods, FUN = function(period) {
  query_and_download(period)
})

【讨论】:

    猜你喜欢
    • 2014-04-12
    • 1970-01-01
    • 1970-01-01
    • 2013-12-12
    • 1970-01-01
    • 2015-09-04
    • 1970-01-01
    • 1970-01-01
    • 2017-07-01
    相关资源
    最近更新 更多