【发布时间】:2015-09-23 12:32:52
【问题描述】:
我正在使用PyRserve。我想从多个正在运行的 python 进程中执行一些 R 评估。所有这些评估都需要使用相同的全局变量,因此如果每个新连接只需定义一次就可以使用这些变量,将节省大量时间。请注意,不能为每个连接重新定义这些,因为这很耗时(例如,某些变量是从文件加载的模型)。有没有办法让多个 PyRserve 连接共享某些变量?如果不是,这里有什么好的解决方法?
我在文档中找不到任何确定的内容。
【问题讨论】:
我正在使用PyRserve。我想从多个正在运行的 python 进程中执行一些 R 评估。所有这些评估都需要使用相同的全局变量,因此如果每个新连接只需定义一次就可以使用这些变量,将节省大量时间。请注意,不能为每个连接重新定义这些,因为这很耗时(例如,某些变量是从文件加载的模型)。有没有办法让多个 PyRserve 连接共享某些变量?如果不是,这里有什么好的解决方法?
我在文档中找不到任何确定的内容。
【问题讨论】:
从 pyRserve documentation 看来,共享内存对象不能*分配给连接命名空间:
在其当前实现中,pyRserve 允许设置和访问 以下基本类型:
- 无(NULL)
- 布尔值
- 整数(仅限 32 位)
- 浮点数(仅限 64 位),即双精度数
- 复数
- 字符串
此外,还支持以下容器:
- 列表
- numpy 数组
- 标记列表
- 属性数组
- 标记数组
如果您为每个连接生成一个工作进程,我会引导您使用 python multiprocessing 库,它为您提供简单类型的共享内存对象,以及 mp.Manager 类下的更高级别的托管对象。
* 可能我还没有测试过这个...
【讨论】: