为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

千巷猫影 2021-10-10 16:10:26
我试图从c调用python代码,该示例在我的环境(python3.6)上运行示例代码正常,但是当我将它集成到我的程序中时,我在调用时出现以下错误Py_Initialize();:...sem_init: SuccessFatal Python error: Can't initialize threads for interpreter你能提供一些线索来解决这个问题吗?似乎错误来自here,但我仍然不确定如何避免这种情况。
查看完整描述

2 回答

?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

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


查看完整回答
反对 回复 2021-10-10
?
慕慕森

TA贡献1856条经验 获得超17个赞

失败的代码是

    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 代码库中有几种不同的实现,具体取决于操作系统和构建标志,因此您需要对其进行调试或以其他方式确定在您的情况下使用哪个来进一步跟踪操作系统调用的错误。


查看完整回答
反对 回复 2021-10-10
  • 2 回答
  • 0 关注
  • 283 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信