将Python解释器嵌入C/C++应用程序是有文档记录的。在从C/C++应用程序调用的多个操作系统线程上运行多个Python解释器的最佳方法是什么(即在同一进程中的一个操作系统线程上运行一个解释器)?这些应用程序可能还存在与内存碎片化和Py_Finalize()的限制相关的问题。
其中一种方法可以是以下内容:
- 在pyconfig.h中禁用Python线程和GIL,以保持简单(#undef WITH_THREAD)
- 将Python解释器源代码的所有可变全局变量移动到通过线程本地存储引用的堆分配结构中(参考:Python on a Phone)。
我的问题是:
- 是否有更好的方法?
- 是否有任何工具可以自动将Python解释器源代码的全局变量转换为通过TLS(线程本地存储)引用的堆分配结构?
类似的主题在此处讨论:
&
几乎可以满足你的所有需求。操作系统通常在进程级别上工作。如果你的意思是“进程”,请纠正你的问题。如果你真的认为你的意思是“线程”,请解释一下为什么你认为操作系统的线程如此重要。 - S.Lott