异步调用Java中的Python

时间:2017-02-27 19:56:18

标签: java python asynchronous callback call

我想从Java调用Python代码。实现这一目标的最佳方式是什么,所以我可以:

  • 使用从Java
  • 传递的参数启动特定函数或脚本
  • 使通信异步(我不想阻止用Java编写的用户界面,我想在Java和Python线程之间发送对象和参数)

此类应用程序的目标是创建用Java编写的GUI,允许用户执行Python编写的任务,并在Python执行某些工作时在其间接收额外的输出。

1 个答案:

答案 0 :(得分:0)

既然你想异步调用Python程序,为什么不利用Java的多线程呢?基本上这个想法是你在单独的线程中调用Python代码。在最简单的(Java 8)形式中,这将是:

new Thread(() -> {
    ProcessBuilder pb = new ProcessBuilder("python","mytest.py", param1, param2);
    Process p = pb.start();
    // more code to capture the output here
}).start();

或者你可以使用比java.util.concurrent.FutureTask更复杂的东西,但是想法仍然是一样的,你的主程序会生成线程,并且无需等待就可以顺利进行