【发布时间】:2019-09-11 17:32:51
【问题描述】:
在 pybind11-wrapped c++ 中,从 python 调用,我可以这样做:
py::array_t<double> t1 = py::array_t<double>(3);
但是:如果我在单独的线程中执行此操作,它会因分段错误而崩溃(实际上,当 t1 超出范围或被破坏时,它似乎会崩溃)。
我可以解决这个问题
PyGILState_STATE gstate;
gstate = PyGILState_Ensure();
pybind11::array_t<double> t1 = pybind11::array_t<double>(3)
PyGILState_Release(gstate);
很明显,pybind11::array_t 中有一些 GIL 相关的东西。一定是这样吗?我必须获得 GIL 才能实例化它吗?
【问题讨论】:
标签: pybind11