关于JAVA调用python的方式
来源:互联网 发布:nginx日志路径 编辑:程序博客网 时间:2024/05/22 07:09
最近疯狂研究java调用python方式,也是刚开始接触python,认识不深,研究成果如下:
环境:win10+eclipse+python3.6
关于调用方式:
1.在python脚本里没有使用到第三方模块的情况下,可以使用jython的方式去调用,可以直接在java方法里调用脚本里函数,并获取返回值,这样的案例在网上很多
但是要使用到第三方模块,如:pandas、scipy、numpy等,采用jython方式调用失败,至少我没看到这样的案例,所以才有下面的方式
2.使用runtime的方式调用python脚本,可以调用python里的第三方模块,如numpy、pandas等,runtime的方式就是在cmd命令下执行脚本命令,通过打印的方式把计算的数据打印出来,这样可以通过流的方式捕获这些数据,从而获取返回值,这个方式其实不是很稳妥的方式,但可以满足调用的需求,下面展示java调用部分代码:
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec("python D:/py/pyfolio-master/test.py 2 3"); //其中2 3传的参数,可以在脚本中获取
InputStream stderr = proc.getInputStream();
InputStreamReader isr = new InputStreamReader(stderr);
BufferedReader br = new BufferedReader(isr);
String line = null;
while ( (line = br.readLine()) != null){
System.out.println(line);
}
ps1:简单说明下由于本人开发环境在远程机上,不能联网,不能随意拷文件(拷安装还要找客户领导,控制严),所以出了一些问题说明下,在python脚本中调用oracle数据时,需要安装oracle instant对象或整个oracle数据库(还有第三种)和配置环境,才能访问到oracle,并获取数据,案例如下:
python脚本:
import support
import sys
import pandas as pd
import json
import pyList
import cx_Oracle
import empyrical as ep
import pyfolio as pf
db=cx_Oracle.connect('dev_quant','oracle','10.2.0.2:1521/DEVSITDB')
cr=db.cursor()
sql="select TO_DATE(TRADE_DATE, 'yyyyMMdd') TRADE_DATE,TDAY_RETURNS from test"
cr.execute(sql)
rs=cr.fetchall()
pd.json
sers=dict(rs)
sers=pd.Series(sers)
threeMonth=sers.between_time('2015-01-05',' 2015-04-05',' include_start',' include_end')
print(threeMonth)
此为热力图python脚本模型,
ps2:java调用python更好的方式思考,由于命令模式调用会有些不稳妥,后期采用zmq消息队列方式在后台linux下调用python再直接返回结果集,这样的方式更好,
- 关于JAVA调用python的方式
- java调用python的3种方式
- 关于java调用webservice的方式学习
- Java中调用python的几种方式
- 关于python的计算方式
- java调用Redis的方式
- python调用c库的方式
- python脚本的两种调用方式
- python函数调用的四种方式
- 关于javascript 匿名函数的调用方式
- 一个关于远程调用方式的场景
- 关于拷贝构造函数的调用方式
- 关于Android中Java调用外部命令的三种方式
- 关于JAVA调用C++的几种方式和一些问题 UnsatisfiedLinkError
- java调用python的webservice
- java调用Python的方法
- Java 调用python的方法
- 关于java包的调用
- 详解synchronized与Lock的区别与使用
- offer35--第一个只出现一次的字符
- debug
- 深入理解Hystrix之文档翻译
- 3139: [Hnoi2013]比赛
- 关于JAVA调用python的方式
- response详解
- 公文写作
- Unix网络编程实例一
- 类加载+获取方法的方法总结
- [动态规划] NOIP2006 能量项链
- PHPSession生命周期
- HTML DOM学习笔记(五)_知识脑图
- 深入理解Zuul之源码解析