我对 Python/Jython 非常陌生,刚开始 4 周。与独立的相同 python 脚本相比,jython 脚本的执行时间要多 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;
}
}