【问题标题】:Is multiprocessing with RPy safe?使用 RPy 进行多处理是否安全?
【发布时间】:2011-08-08 02:54:16
【问题描述】:

在多处理环境中调用 RPy 函数是否安全?是否存在任何需要注意的关于 RPy 的多处理问题?

一个简单的例子可能如下:

from multiprocessing import Pool
from rpy import *

def f(x):
    return r.mean(x)


if __name__ == '__main__':
    p = Pool(5)
    print sum(p.map(f, [range(1, 1000000), range(2, 2000000), range(3, 3000000)]))

【问题讨论】:

    标签: python multithreading r multiprocessing rpy2


    【解决方案1】:

    看到多处理为池中的每个工作实例生成新的 python 实例并且它们不共享公共资源——包括 R 进程的实例——它很可能是线程安全的。最好的方法是测试一下看看。

    【讨论】:

    • 你能建议我测试它的方法吗?
    • 如果上面的代码运行并给出了你期望的答案,那就是你的测试并且它通过了。对于更复杂的代码,我会按照模块文档中的指南编写它。如果它运行,你应该很好。多处理是非常安全的,所以不用担心——如果你没有出错,你就明白了。 :)
    【解决方案2】:

    我使用多处理和 rpy2 没有问题。无法与 rpy (v1) 对话,但它很有可能会起作用。

    【讨论】:

      猜你喜欢
      • 2020-02-22
      • 2015-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 2012-10-29
      相关资源
      最近更新 更多