私は4週間前に始めたばかりのPython/Jythonに非常に慣れていません.jythonスクリプトの実行時間の問題は、スタンドアロンの同じpythonスクリプトと比較して14倍かかります.私のプロジェクト要件に従って、python/JythonスクリプトをJavaアプリケーションと統合する必要があります. Jython doc に従って、jython スクリプトを呼び出す JythonFacory クラスを作成し、スクリプトの結果を取得しました。しかし、大きなパフォーマンスの問題である実行時間 (59 秒) を見たとき。同じスタンドアロンの python スクリプトを eclipse で実行したところ、非常に高速でした (約 3 秒)。
より良いパフォーマンスを得るために何をすべきか教えてください。パフォーマンスの問題のため、Jython は適切なオプションではないようです。Jython.jar を使用せずに Java から純粋な Python スクリプトを直接呼び出す他のオプションはありますか
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;
}
}