从Java异步调用Python

从Java异步调用Python,java,python,asynchronous,callback,call,Java,Python,Asynchronous,Callback,Call,我想从Java调用Python代码。实现这一目标的最佳方式是什么,这样我就可以: 使用从Java传递的参数启动特定函数或脚本 使通信异步(我不想阻止用Java编写的用户界面,我想在Java和Python线程之间发送对象和参数) 这种应用程序的目标是创建用Java编写的GUI,它允许用户在Python执行某些工作时执行用Python编写的任务并在其间接收额外的输出。既然要异步调用Python程序,为什么不利用Java的多线程呢?基本上,您可以在单独的线程中调用Python代码。在最简单的(Ja

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

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

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

既然要异步调用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,但是想法还是一样的,你的主程序会产生线程,并且在不等待的情况下顺利运行

套接字通信是独立于代码语言的,那么你尝试过什么呢?是的:)我想到了服务器解决方案,但我想知道是否有更像JNI的(比如我可以通过JNI从C回调到Java)你看过Jython吗?我可以给你一个开始的地方。谢谢!我来查一下:)