【发布时间】:2015-03-15 10:01:03
【问题描述】:
我有一个 Java 程序,它以对象列表的形式从数据库中获取数据,而一个对象只有一些与之相关的原始类型,例如字符串和整数。
现在我需要将 Java 中的数据传递给 Python 程序进行一些计算,然后将计算出的输出返回给 Java 程序。
我的 Python 程序有以下导入
import pandas as pd
import statsmodels.api as sm
import statsmodels.formula.api as smf
import numpy as np
import scipy.misc as sp
from scipy.optimize import minimize
from scipy.stats import poisson
有人对我如何实现这一目标有任何想法吗?我查看了 Jython,但发现它与 NumPy 和其他不兼容,但有一个可用的兼容层,称为 JyNI,但我找不到很多示例来获得有效的解决方案。
编辑:根据我的研究,似乎没有合适的库来处理 Java 和 Python 之间的通信,但是 Java 程序是否可以启动一个 Python 脚本来查找包含它需要处理的数据,然后打印 Java 可以获取的输出?
【问题讨论】:
-
远离任何进程内解决方案,这听起来不错,但这是一个不必要的麻烦并且几乎没有任何好处(我过去自己犯了这个错误)。 Stdin/stdout 确实有效(使用文件似乎过于复杂),另一种解决方案是在 localhost 上使用 TCP。那么这只是选择正确的数据格式的问题,JSON、protobuf、XML、CSV、self-rolled,.. 还有几十个选项(尽管请坚持前三个之一)。
-
@Voo 通过使用进程执行 Python 脚本,我得到了一些工作。感谢您的建议。
-
nd4j.org 可以完成您可能需要 Python 科学计算框架来完成的大部分工作......
-
@racknuf 它不工作