python - 带有嵌入式 python 模块的 C++ 多线程

标签 python c++ gil python-2.4

我试图通过启动一个 boost 线程来创建一个多线程程序,该线程调用一个函数,该函数又调用一些 python 模块,但程序卡在那里,因为它获取了一些 PyGILState_Ensure() 锁并等待它无限期释放。你能告诉我这里出了什么问题吗?

是的,实际上一个 python 模块调用了我的 c++ 代码,该代码在单独的线程中调用另一个 python 模块,这就是为什么我认为它等待 PyGIL 释放而导致死锁,所以,有没有使用补丁来删除的解决方案PyGIL?

最佳答案

Python 解释器不可重入,需要在调用时锁定解释器(例如 http://dabeaz.blogspot.be/2011/08/inside-look-at-gil-removal-patch-of.html )。在您的特定情况下,解释器上似乎有另一个 Python 调用已经在运行,并且它持有 GIL。

关于python - 带有嵌入式 python 模块的 C++ 多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12391410/

相关文章:

Python 3.6 - 'NoneType' 测试失败

c++ - 使用实现 CvCameraViewListener2 的类将帧从 android 传递到 native 方法

java - 寻找没有 GIL 的强/显式语言

python - python 中的多线程 : is it really performance effiicient most of the time?

python - 用python从二进制文件中读取32位带符号的ieee 754 float ?

python - 当多个子进程使用 `queue.Queue`进行访问时, `concurrent.futures.ProcessPoolExecutor`是线程安全的吗?

c++ - 具有不同参数但相同代码的模板类方法

c++ - 为什么双指针不修改表?

python - python GIL 的多线程示例

python - Groupby 和 Pivot Pandas 表