【问题标题】:How to pass some data from python3 to java如何将一些数据从python3传递到java
【发布时间】:2020-08-18 20:16:39
【问题描述】:

这是我的问题:我需要创建一个不和谐的机器人,它使用语音识别来识别语音命令,并将识别的字符串从该机器人/python 程序发送到 Java 程序(在本例中为 Spigot Minecraft 插件)。我已经扫描了所有内容,但找不到任何合适的方法来做到这一点。我唯一能想到的就是创建一个包含必要数据或其名称的文件,并将其用作机器人和插件之间的“桥梁”,但我认为这不是一个非常正统或合适的方法。 (我试过jython,但据我所知它一直停留在python2.7上)。

【问题讨论】:

  • 使用文件作为程序之间的桥梁并不是不合常规的。我认为使用套接字更常见,但文件的工作方式也取决于通信的工作方式。您必须解决的一个问题是不允许一个进程长时间锁定文件。
  • 顺便说一下,这个问题的所有解决方案都直接取决于您的操作系统。您应该使用您的问题来回答。

标签: java python-3.x speech-recognition minecraft


【解决方案1】:

我假设我们正在讨论单独的 Python 和 Java 进程,因为您发现 Jython 对您的情况没有用处。我认为这实际上有两个问题:(a)如何将数据从 Python 获取到 Java 以及(b)使用什么格式。

对于 (a),您可以使用 named pipedomain sockets(我相信他们是 now also exist on Windows)。对于这两个进程间通信抽象之间的差异see here。另一种选择是 TCP,但除非存在进程驻留在不同机器上的可能情况,否则这可能不是最好的。

(b) 的答案在一定程度上取决于数据的性质。 JSON 可能是一种选择,但您可能还想查看可能更快的替代方案。我想到的是Apache ThriftGoogle's Protocol Buffers

【讨论】:

  • 你并不真正需要两个进程之间的TCP 连接,而只需要一个本地UNIX socket。当然,这个答案假设是一台 UNIX 机器并且不能在 Windows 上工作。
  • 嗨 Ted,是的,这就是我提到命名管道的原因,它也适用于 Windows。我将检查 Windows 中是否存在域套接字并编辑答案。还将降级 TCP,因此读者不会跳转到此选项。
猜你喜欢
  • 1970-01-01
  • 2010-10-23
  • 2015-05-17
  • 2021-04-23
  • 1970-01-01
  • 1970-01-01
  • 2016-02-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多