我正在从这样的java类调用python脚本:
// build aruments for Script
state.get().argv.clear();
state.get().argv.append(new PyString(""));
state.get().argv.append(new PyString("-i" + Ifolder.toString()));
state.get().argv.append(new PyString("-o" + Ofolder.toString()));
// craete PythonInterpreter with those arguments
PythonInterpreter interp = new PythonInterpreter(null, state.get());
// invode LawLinker
interp.execfile("src/scriptx.py");
state是一个Threadlocal变量,如下所示:
private static final ThreadLocal<PySystemState> state = new ThreadLocal<PySystemState>() {
@Override
protected PySystemState initialValue() {
return new PySystemState();
}
};
我必须使它成为ThreadLocal,因为否则每个Thread都会使用相同的参数调用Pythonscript,即相同的状态。
所以这是奇怪的部分。
如果我一次只运行一个这样的线程,脚本的执行速度会越来越快 但是,如果我一次运行多个线程,则执行时间也会相同,并且时间很长...大约5秒。 此外,它不是创建PySystemState或PythonInterpreter的新实例,它占用时间最长,它是脚本的实际执行。
任何人都可以向我解释这个吗?