R和Python之间的双向通信

时间:2014-05-23 09:55:05

标签: python r ipc

我有一些内部使用回调的Python代码。我希望能够从R中调用此代码并使回调与R会话通信(例如,在回调中执行R代码)。基本上,Python代码在被调用时充当R的驱动程序。我不确定如何正确地做到这一点。

像RPy和rPython这样的软件包似乎无法满足我的需求。 Python代码在执行回调时需要维护特定的状态,因此排除了对R内部Python函数的连续调用。

据我所知,唯一的解决方案是在R中启动Python子进程,然后在必要时让它们进行通信。沟通涉及这样的序列:

  • Python -> R:回调命令
  • R -> Python:回调的结果

看了很多替代方案后,我很难找到最佳的沟通策略(双向和平台无关,理想情况下):

  1. 使用匿名管道。这似乎是我最好的解决方案,R only seems to support pipes that read or write (not both)
  2. 使用可以关闭并重新打开的命名管道来获取读写功能。在调用Python之前和Python完成之后,R会话将负责制作和删除命名管道。
  3. 我觉得我过于复杂,但我无法想到其他选择。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

答案很旧,但如果有人需要没有安装的工具,请查看: https://github.com/jstar88/pyCommunicator

能够按照您的要求进行沟通和使用回调