java - 如何在 Java 和 Python 之间创建 2 路通信

标签 java python frontend backend

我对 Java 和 Python 都很陌生,尽管我有一些编程经验。对于作业,我需要创建一个以某种方式使用 Java 的程序。我的项目将使用 Java 作为 UX,使用 Python 进行信号处理和特征提取,因为它有一些很好的工具。
但是,我的问题是如何在两个程序之间建立通信。也许以前有人问过这个问题,但由于我不知道最好的术语,所以我找不到答案。
在我的 Java 程序中,我可以获取 .csv 文件的文件路径,将其发送到 Python,Python 返回原始信号和处理后的信号。为此,我写道:

private static void sendPython(String path, JTextField console)
    {
        String pathPython = "C:\\Users\\gonca\\Desktop\\untitled0.py";
        String [] cmd = new String[3];
        cmd[0] = "python";
        cmd[1] = pathPython;
        cmd[2] = path;
        Runtime r = Runtime.getRuntime();
        try
        {
            Process p = r.exec(cmd);
            BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
            String s = "";
            while((s = in.readLine()) != null)
            {
                console.setText(s);
            }
        }
        catch (IOException e)
        {
            console.setText("Unable to run python script");
        }
        
    }
我正在考虑让 py 脚本在分隔行中输出信号,值用“,”或“;”分隔,并使用 BufferedRead 读取每一行,分隔值并从分隔值创建一个新的 ArrayList。
但是,在开始更加努力地做到这一点之前,我想知道这是否是最好的方法,或者是否有更有效的方法来做到这一点。

最佳答案

有更多方法可以做到这一点:
解决方案1:
使用来自 java 的 python 库 System.loadLibrary ,并调用 python 方法。 (这是一个使用 C/C++ 的例子: Calling a python method from C/C++, and extracting its return value )
解决方案2:
将 python 作为另一个进程启动,并使用 D-Bus(或类似的东西)与它通信。

关于java - 如何在 Java 和 Python 之间创建 2 路通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66950775/

相关文章:

java - 给定一个包,我如何确定它的 artifactId 应该是什么?

Java 枚举与创建位掩码和检查权限混淆

Python:在 Pandas Series 上使用 lambda 函数,if..else

python - 在不使用 [slice,slice] 语法的情况下使用 Numpy 多维数组切片?

wolfram-mathematica - 有没有办法在 Mathematica 中使用 [[ 和 ]] 作为 Part 吗?

java - 将对象从文件读取到输入流

java - 在实例重新启动之前,从 GAE HRD 中的 Json 创建的 JDO 无法正确转换回 Json

python - 如何创建具有多个不同形状字段的 numpy 结构化数组?

android - 我应该如何为 Android 应用程序制作服务器端软件?

html - 如何在单击时更改按钮 CSS 颜色