公司代码都用java编写,但是我做机器学习离不开python,而且还包含第三方包sklearn。现在再搞tensorflow,在老公的唐僧念之下,跑通了,分享一下代码。
public void java2python() throws Exception{
// python解析器的路径
String s1 = "D:\\ProgramData\\Anaconda3\\envs\\tensorflow\\python";
// 要执行的python脚本
String s2 = "D:\\pythonworkspace\\DeepLearning\\temp.py";
// 传入python脚本的参数
String s3 = 3+"";
String s4 = 4+"";
String[] arguments = new String[] {s1, s2, s3, s4};
Process process = Runtime.getRuntime().exec(arguments);
BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
String result = "";
// python里的运行结果,想传给java,就需要用这种readline的形式了。
while ((line = in.readLine()) != null) {
result += line;
System.out.println(line);
}
in.close();
// System.out.println(result);
}
python部分的代码很简单,就是tensorflow的一个helloword
# -*- coding: utf-8 -*-
import tensorflow as tf
hello = tf.constant("Hello!TensorFlow")
test = tf.constant("bye")
sess = tf.Session()
print(sess.run(hello))
print(sess.run(test))
# 下面没用,只是为了尝试java调python时传参用的
import sys
a = sys.argv[1] # 接收第一个参数
b = sys.argv[2] # 接收第二个参数
print(int(a) + int(b))