单个JVM中的多个Jython环境

时间:2013-02-13 20:20:37

标签: java jython jython-2.5

是否可以在一个JVM下运行多个具有不同系统设置(即库导入路径)的Jython环境。

如果可能,请建议如何正确完成。

从技术上讲,没有什么能阻止我让PythonInterpreter interpreter = new PythonInterpreter();执行更多次。但我想确保没有单身人士坐在里面。

1 个答案:

答案 0 :(得分:1)

检查源代码后,似乎PySystemState是单例

Source code

public class PySystemState extends PyObject implements ClassDictInit {
...
    private static boolean initialized = false;
...

Source code

public static synchronized PySystemState doInitialize(Properties preProperties,
                                                 Properties postProperties,
                                                 String[] argv,
                                                 ClassLoader classLoader,
                                                 ExtensiblePyObjectAdapter adapter) {
        if (initialized) {
            return Py.defaultSystemState;
        }
        initialized = true;
...

这意味着PySysStatus属性只设置一次,下一次调用get PySysState将返回相同的Jython环境。

仍然有办法使用自定义ClassLoader在不同的上下文中初始化不同的PySysState,但对于我手头的任务,它不是必需的。