我设置了一个Python脚本,它实例化Rserve,设置一些R脚本和函数,然后针对函数运行一些数据。但是,我无法创建同一过程的多线程实例。我的核心问题是,一个线程似乎总是主导处理,而所有其他线程都被忽略。
我已经假设pyRserve可以是多线程的 - 这是一个正确的假设吗?是否有任何示例将其显示为多线程应用程序?
我继续使用代码,事实证明每个线程都需要自己的端口才能工作。我没有在任何地方找到记录,我只是在尝试不同的想法。所以:
- 我设置了尽可能多的 Rserve 实例作为我想要的线程。这些实例中的每一个都是它自己的端口
- 在我的 python 代码中,当我实例化 pyRserve 对象时,我为它分配了一个唯一的端口号。
多线程现在可以按预期快速工作!
我假设你使用的是Windows机器。 Rserve的新闻部分指出最新版本(1.8-6)是
仍然强烈建议不要使用Windows,因为其局限性 操作系统是以及它如何防止任何明智的使用(Windows仅支持) 单客户端、单线程、协作模式 - SO 用于玩具用途 仅)。
Rserve网页有更多关于Windows的说明:
由于 Windows 操作系统不支持 生成进程的副本时,无法初始化 R 和 对所有并行的后续连接使用初始化的副本。 因此,适用于 Windows 的 Rserve 不支持并发连接。 这意味着所有后续连接共享相同的命名空间 并且不支持会话(如 Unix 上的>=0.4 版本)。是的 仍然可以启动多个 R 服务来处理多个 Rservs 连接(只需确保为每个连接使用不同的端口)。
但是,我让它在Windows上使用deployr-rserve附带的Rserve版本(无需使用在不同端口上运行的多个进程)。这个分叉似乎基于 Rserve 0.6-3.1 - 所以它已经过时了......