我不清楚为什么存在子解释器API,以及为什么它被用于诸如mod wsgi apache模块之类的模块。它主要用于为同一进程中运行的不同应用程序创建安全沙盒,还是允许多线程并发?也许两者都有?还有其他目的吗?

最佳答案

我想目的是创建单独的Python执行环境。例如,mod_wsgi(apache python module)托管单个python解释器,然后在子解释器中托管多个应用程序(在默认配置中)。
documentation中的一些要点:
对于Python代码的执行,这是一个(几乎)完全独立的环境。特别是,新的解释器具有所有导入模块的独立版本,包括基本模块__builtin____main__sys
加载的模块表(sys.modules)和模块搜索路径(sys.path)也分开。
因为子解释器(和主解释器)是同一过程的一部分,所以它们之间的隔离并不完美——例如,使用诸如os.close()之类的低级文件操作,它们可能(意外或恶意)影响彼此打开的文件。
由于扩展在(子)解释器之间共享的方式,某些扩展可能无法正常工作;当扩展使用(静态)全局变量时,或者当扩展在初始化后操纵其模块的字典时,这尤其可能。

关于mod-wsgi - Python中的子解释器API的目的是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/755070/

10-12 23:27