【问题标题】:Multiple connections with shared memory using PyRserve使用 PyRserve 与共享内存的多个连接
【发布时间】:2015-09-23 12:32:52
【问题描述】:

我正在使用PyRserve。我想从多个正在运行的 python 进程中执行一些 R 评估。所有这些评估都需要使用相同的全局变量,因此如果每个新连接只需定义一次就可以使用这些变量,将节省大量时间。请注意,不能为每个连接重新定义这些,因为这很耗时(例如,某些变量是从文件加载的模型)。有没有办法让多个 PyRserve 连接共享某些变量?如果不是,这里有什么好的解决方法?

我在文档中找不到任何确定的内容。

【问题讨论】:

    标签: python r rserve pyrserve


    【解决方案1】:

    从 pyRserve documentation 看来,共享内存对象不能*分配给连接命名空间:

    在其当前实现中,pyRserve 允许设置和访问 以下基本类型:

    • 无(NULL)
    • 布尔值
    • 整数(仅限 32 位)
    • 浮点数(仅限 64 位),即双精度数
    • 复数
    • 字符串

    此外,还支持以下容器:

    • 列表
    • numpy 数组
    • 标记列表
    • 属性数组
    • 标记数组

    如果您为每个连接生成一个工作进程,我会引导您使用 python multiprocessing 库,它为您提供简单类型的共享内存对象,以及 mp.Manager 类下的更高级别的托管对象。

    * 可能我还没有测试过这个...

    【讨论】:

    • 感谢您的回复!我知道管理器(双关语:)),但这里的交易是我们有很多 R 代码将很多模型加载到内存中。使用多处理在客户端共享它需要额外的工作,如果给出一个替代方案,我想避免。但不幸的是,似乎没有好的选择。
    猜你喜欢
    • 1970-01-01
    • 2014-10-08
    • 2020-02-23
    • 1970-01-01
    • 2011-11-17
    • 2015-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多