我使用Boost Python在C ++中嵌入Python。
我想同时运行2个Python脚本。脚本还应该有机会访问C ++成员函数。
好吧,当我在主解释器中只使用一个线程时,它可以使用成员函数。但是为了同时运行2个脚本,我为每个线程(http://docs.python.org/2/c-api/init.html#sub-interpreter-support)创建了一个新的解释器。因此脚本可以同时执行,但它们无法使用成员函数。
这只是一般问题。
PyThreadState* Py_NewInterpreter():
创建一个新的子解释器。这是一个(几乎)完全独立的Python代码执行环境。特别是,新的解释器具有所有导入模块的独立,独立版本,包括基本模块builtins, main 和sys。加载模块(sys.modules)和模块搜索路径(sys.path)的表也是分开的。新环境没有sys.argv变量。它有新的标准I / O流文件对象sys.stdin,sys.stdout和sys.stderr(但是它们引用相同的底层文件描述符)。
那么,是否有可能这样做?