在 C/C++ 应用程序中嵌入 Python 解释器是有据可查的。在从 C/C++ 应用程序调用的多个操作系统线程(即同一进程内的一个操作系统线程上的一个解释器)上运行多个 python 解释器的最佳方法是什么?此类应用程序还可能存在与内存碎片和Py_Finalize() 限制相关的问题。
一种这样的方法可以是:
- Python 线程,因此 GIL 在 pyconfig.h 中被禁用以保持简单(#undef WITH_THREAD)
- Python 解释器源代码的所有可变全局变量都移动到通过线程本地存储引用的堆分配结构(参考:电话上的 Python)。
我的问题是:
- 有没有更好的方法?
- 是否有任何工具可以自动将 Python Interpreter 源代码的全局变量转换为通过 TLS(线程本地存储)引用的堆分配结构?
这里讨论了类似的主题: