如何使用 R 连接两台计算机?
Posted
技术标签:
【中文标题】如何使用 R 连接两台计算机?【英文标题】:How to connect two computers using R? 【发布时间】:2016-03-07 16:48:28 【问题描述】:是否可以在两台不同计算机上的两个 R 会话之间打开通信流?
如果两者都在同一台计算机上,我会使用套接字来连接会话。我想对于两台不同的计算机,我应该尝试使用网络套接字。 httpuv
支持 R 作为 Web 套接字服务器,但不幸的是,我在 R 中找不到任何支持客户端 Web 套接字的最新包。
我不喜欢使用网络套接字。任何能够在计算机之间进行实时通信的解决方案都可以。
【问题讨论】:
您是否尝试进行任何集群并行计算?有这个包,snow
,你可能会感兴趣cran.r-project.org/web/packages/snow/index.html
您要解决的问题是什么?大内存机器上的远程会话?聚类? MPI?
我不是在做集群并行计算,但是在通信概念上可能是相似的。我正在尝试在 R 中构建类似于代理服务器的东西,它从所有客户端获取请求,然后将它们发送给适当的工作人员。我的限制是由于安全原因我无法从工作计算机复制原始数据,而且我无法从外部网络访问工作计算机。因此,我在网络中分配了一台计算机来获取客户端请求,并将它们与相关数据一起发送给相关工作人员。
有趣。您可以尝试两个 R 服务器。一个来自 Rstudio(rstudio.com/products/rstudio-server-pro),另一个来自微软(blog.revolutionanalytics.com/2016/01/microsoft-r-open.html)。不确定代理本身是否可以在 R 中完成
【参考方案1】:
我已经使用sockets 在使用 R 的计算机之间进行通信。
服务器示例:
import socket
server <- function()
while(TRUE)
writeLines("Listening...")
con <- socketConnection(host="localhost", port = 6011, blocking=TRUE,
server=TRUE, open="r+")
data <- readLines(con, 1)
print(data)
response <- toupper(data)
writeLines(response, con)
close(con)
server()
客户端示例:
import socket
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(("localhost", 6011))
while 1:
data = raw_input ( "Enter text to be upper-cased, q to quit\n" )
client_socket.send(data)
if ( data == 'q' or data == 'Q'):
client_socket.close()
break;
else:
data = client_socket.recv(5000)
print "Your upper cased text: " , data
【讨论】:
以上是关于如何使用 R 连接两台计算机?的主要内容,如果未能解决你的问题,请参考以下文章