我设置了一个 Python 脚本,它在其中实例化 Rserve,设置了一些 R 脚本和函数,然后针对这些函数运行一些数据。但是,我一直无法创建同一进程的多线程实例。我的核心问题是一个线程似乎总是主导处理,而所有其他线程都被忽略了。
我假设 pyRserve 可以是多线程的——这是一个正确的假设吗?是否有任何示例表明这是一个多线程应用程序?
我设置了一个 Python 脚本,它在其中实例化 Rserve,设置了一些 R 脚本和函数,然后针对这些函数运行一些数据。但是,我一直无法创建同一进程的多线程实例。我的核心问题是一个线程似乎总是主导处理,而所有其他线程都被忽略了。
我假设 pyRserve 可以是多线程的——这是一个正确的假设吗?是否有任何示例表明这是一个多线程应用程序?
我假设您使用的是 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 - 所以它已经过时了......
我继续使用代码,结果发现每个线程都需要自己的端口才能工作。我没有在任何地方找到记录,我只是在尝试不同的想法。所以:
多线程现在可以按需要快速运行!