我对Python / Jython非常陌生,仅在4周前开始学习。 问题出在执行Jython脚本的时间上,它比独立的Python脚本花费了14倍的时间。根据我的项目要求,我们需要将Python / Jython脚本与Java应用程序集成。 根据Jython文档,我创建了JythonFacory类来调用Jython脚本并获取脚本结果。但是当我看到执行时间(59秒)时,这是一个很大的性能问题。当我在eclipse中运行相同的独立Python脚本时,速度非常快,只需要(约3秒)。
请问您有什么建议可以让我获得更好的性能。看起来由于性能问题,Jython不是一个好选择。是否有其他选项可以直接从Java调用纯Python脚本而无需使用Jython.jar?
public class JythonFactory {
private static JythonFactory instance = null;
public synchronized static JythonFactory getInstance() {
if(instance == null){
instance = new JythonFactory();
}
return instance;
}
public static Object getJythonObject(String interfaceName,Map<String, Object>
requestTable, String pathToJythonModule) {
Object javaInt = null;
PythonInterpreter interpreter = new PythonInterpreter();
interpreter.set("REQUEST_TABLE", requestTable);
interpreter.execfile(pathToJythonModule);
String tempName = pathToJythonModule.substring(pathToJythonModule.lastIndexOf("/")+1);
tempName = tempName.substring(0, tempName.indexOf("."));
//System.out.println(tempName);
String instanceName = tempName.toLowerCase();
String javaClassName = tempName.substring(0,1).toUpperCase() + tempName.substring(1);
String objectDef = "=" + javaClassName + "()";
//System.out.println("instanceName"+instanceName + " objectDef"+objectDef);
interpreter.exec(instanceName + objectDef);
try {
Class JavaInterface = Class.forName(interfaceName);
javaInt = interpreter.get(instanceName).__tojava__(JavaInterface);
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
}
return javaInt;
}
}
jython yourscript.py
运行它,你会得到什么时间? - jfsjython
脚本,即一分钟不是指jython yourscript.py
(尽管结果可能相同)。此外,Cython
与CPython(用C实现的Python参考实现)不同。 - jfs