将Pybind11与第三方模块一起使用

时间:2018-10-22 12:23:42

标签: python c++11 pybind11

我有一个小的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这样的第三方模块?将不胜感激任何建议!

0 个答案:

没有答案