R并行进程的数据库连接池

时间:2014-07-08 01:19:20

标签: mysql r postgresql parallel-processing

我使用包PostgreSQLRPostgreSQL建立了数据库连接。目前我做以下事情:

  1. 从我的数据库中检索列表
  2. 通过for循环运行列表,进行计算并将值写回数据库
  3. 我有兴趣并行化这个过程。显而易见的是在同名包中使用foreach功能。但是,我们需要使用连接池:在这种情况下,我感兴趣的是,如果有人知道我可以用来共享我的数据库连接的并行后端。这是一个特定的未解决的例子:

    foreach %dopar% + RPostgreSQL

    在上面的例子中,registerDoMC并行后端没有连接池,可以解决每个dopar工作者中的连接问题。查看registerDoSnow包中的snow并行后端也不具备此功能。

    另一种方法是使用mclapply代替dopar。在这种情况下,是否有人知道是否或如何与每个mclapply工作者共享数据库连接?

1 个答案:

答案 0 :(得分:3)

您不能在任何通用R并行编程包中的不同工作者之间共享数据库连接,因为工作者是独立的进程。但是,您可以为每个工作者创建一个连接,并让工作人员为每个执行的任务使用该连接。我在回答问题that you cited.

时讨论了如何做到这一点