我有一个小的Python脚本,它几次使用numpy进行计算,而Qt Application则使用pybind11调用了一个脚本。使用py::scoped_interpreter
来管理解释器的生存期,我只能运行一次脚本。在第二次呼叫应用程序崩溃时。
Here我找到了一个解决方案-使用initialize_interpreter() / finalize_interpreter()
对手动管理解释器的生存期可以解决该问题,但就我而言不是。现在,应用程序运行脚本,返回结果并在finalize_interpreter()
行崩溃。删除该行会导致与使用py::scoped_interpreter
相同的行为。这是使用的代码:
// py::scoped_interpreter guard{};/*crashes on second call if using numpy*/
py::initialize_interpreter();
py::module FullPow = py::module::import("FullPow");//importing module with script
const char* FilePath = filename.toStdString().c_str();
if (filename != ""){
py::list result = FullPow.attr("PybindExample")(FilePath);
vector<float> n = result.cast<vector<float>>();
qDebug()<<n[1];}
py::finalize_interpreter();
那么有什么方法可以多次使用像numpy这样的第三方模块?将不胜感激任何建议!