致命的 Python 错误:从 c 调用 python 时无法为解释器初始化线程

我试图从c调用python代码,该示例在我的环境(python3.6)上运行示例代码正常,但是当我将它集成到我的程序中时,我在调用时出现以下错误Py_Initialize();:


...

sem_init: Success

Fatal Python error: Can't initialize threads for interpreter

你能提供一些线索来解决这个问题吗?


似乎错误来自here,但我仍然不确定如何避免这种情况。


千巷猫影
浏览 300回答 2
2回答

慕尼黑的夜晚无繁华

sem_init我的程序中有一个函数名,可能和系统库有冲突,我修改了这个函数名后程序运行正常(但还是不知道是什么原因)。

慕慕森

失败的代码是    if (head_mutex == NULL)         Py_FatalError("Can't initialize threads for interpreter");搜索代码回head_mutex参考发现#define HEAD_INIT() (void)(head_mutex || (head_mutex = PyThread_allocate_lock()))它在失败的代码之前被调用。所以,原因是PyThread_allocate_lockreturn NULL。Python 代码库中有几种不同的实现,具体取决于操作系统和构建标志,因此您需要对其进行调试或以其他方式确定在您的情况下使用哪个来进一步跟踪操作系统调用的错误。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python