1

我设置了一个 Python 脚本,它在其中实例化 Rserve,设置了一些 R 脚本和函数,然后针对这些函数运行一些数据。但是,我一直无法创建同一进程的多线程实例。我的核心问题是一个线程似乎总是主导处理,而所有其他线程都被忽略了。

我假设 pyRserve 可以是多线程的——这是一个正确的假设吗?是否有任何示例表明这是一个多线程应用程序?

4

2 回答 2

0

我假设您使用的是 Windows 机器。Rserve的新闻部分指出,最新版本 (1.8-6)

鉴于操作系统的局限性以及它如何阻止任何合理的使用(Windows 仅支持单客户端、单线程、协作模式 - 因此仅用于玩具用途),仍然强烈建议不要使用 Windows。

Rserve 网页在此处有更多关于 Windows 的说明:

由于 Windows 操作系统不支持派生进程副本的 fork 方法,因此无法初始化 R 并为所有后续连接并行使用初始化副本。因此,Rserve for Windows 不支持并发连接。这意味着所有后续连接共享相同的命名空间,并且无法支持会话(如在 unix 上 >=0.4 版本)。仍然可以启动多个 Rserve 来处理多个连接(只需确保为每个连接使用不同的端口)。

但是,我让它在 Windows 上使用deployr-rserve附带的 Rserve 版本(无需使用在不同端口上运行的多个进程)。这个分支似乎基于 Rserve 0.6-3.1 - 所以它已经过时了......

于 2019-01-18T17:03:50.753 回答
0

我继续使用代码,结果发现每个线程都需要自己的端口才能工作。我没有在任何地方找到记录,我只是在尝试不同的想法。所以:

  1. 我设置了与我想要的线程一样多的 Rserve 实例。这些实例中的每一个都是它自己的端口
  2. 在我的 python 代码中,当我实例化 pyRserve 对象时,我为它分配了一个唯一的端口号。

多线程现在可以按需要快速运行!

于 2017-04-11T17:16:44.750 回答