1

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

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

从技术上讲,没有什么能阻止我PythonInterpreter interpreter = new PythonInterpreter();执行不止一次。但我想确定里面的某个地方没有单身人士。

4

1 回答 1

1

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

源代码

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

源代码

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

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

仍然可以使用自定义 ClassLoader 在不同的上下文中初始化不同的 PySysState,但对于我手头的任务来说,这不是必需的。

于 2013-02-14T14:49:42.407 回答