C++库使用SWIG封装在Python中。我们可以在Python中实例化一个类,当我们调用这个使用Python C API的类中的方法时,会出现以下错误:
致命的Python错误: PyThreadState_Get:无当前线程中止陷阱:6
如果我们在C中调用Python之前插入Py_BEGIN_ALLOW_THREADS,那么这个错误就会变成一个分段错误。
这似乎是Python调用C的问题,C调用Python,不是吗?有什么想法吗?
发布于 2014-04-11 21:27:02
在从C调用python之前,您需要确保使用PyGILState_Ensure()锁定GIL,并且在调用之后,您可以使用PyGILState_Release()释放GIL。有关详细信息,请访问:
https://docs.python.org/2/c-api/init.html?highlight=gil#PyGILState_Ensure
https://stackoverflow.com/questions/23000913
复制相似问题