JavaからPythonモデルを呼び出す方法

JavaからPythonモデルを呼び出す方法にはいくつかあります。

  1. Java の ProcessBuilder クラスを利用して Python スクリプトを実行しています。 この手法では、新しいプロセスを作成して Python スクリプトを実行し、入出力ストリームで通信を行います。 そのプロセスの入力ストリームから Python モデルにデータを渡し、プロセスの出力ストリームを読み取ってモデルの結果を取得します。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class PythonModelCaller {

    public static void main(String[] args) {
        try {
            // 创建进程并执行Python脚本
            ProcessBuilder pb = new ProcessBuilder("python", "path/to/your/python/script.py");
            Process process = pb.start();

            // 获取进程的输入流和输出流
            InputStream inputStream = process.getInputStream();
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
            
            // 向Python脚本传递数据
            process.getOutputStream().write("Input data".getBytes());
            process.getOutputStream().flush();

            // 读取Python脚本的输出
            String output;
            while ((output = bufferedReader.readLine()) != null) {
                System.out.println(output);
            }

            // 等待进程执行完毕
            process.waitFor();
        } catch (IOException | InterruptedException e) {
            e.printStackTrace();
        }
    }
}
  1. JavaのJythonライブラリを使用する。JythonはJava実装のPythonインタプリタであり、Javaの中で直接Pythonコードを呼び出すことができます。PythonモデルのコードをPythonスクリプトに収めて、Jythonライブラリを使ってJavaから実行することができます。

まず、Java プロジェクトの依存関係に Jython ライブラリを追加します。次に、次のコードを使用して Python モデルを呼び出すことができます。

import org.python.core.Py;
import org.python.core.PyFunction;
import org.python.core.PyObject;
import org.python.util.PythonInterpreter;

public class PythonModelCaller {

    public static void main(String[] args) {
        try (PythonInterpreter pyInterp = new PythonInterpreter()) {
            // 加载Python脚本
            pyInterp.execfile("path/to/your/python/script.py");

            // 获取Python函数对象
            PyFunction pyFunction = pyInterp.get("your_function_name", PyFunction.class);

            // 调用Python函数并传递参数
            PyObject result = pyFunction.__call__(Py.newString("Input data"));

            // 处理Python函数的返回值
            System.out.println(result);
        }
    }
}

Jythonはインタプリタで、コンパイラではないため、パフォーマンス上の制限がある場合があります。

  1. Pythonモデルを呼び出すためにJavaのJNI(Java Native Interface)を使用する。この方法では、JavaとPythonの間にCまたはC++インターフェイスの層を作成し、JavaデータをPythonデータに変換し、Pythonモデルを呼び出す必要がある。この方法は比較的高度な技術が必要だが、より高いパフォーマンスを提供できる。

JavaでPythonモデルを呼び出す一般的な3つの方法は上記の通りで、実際の状況に応じて最適な方法を選択できます。

bannerAds