У меня есть небольшой скрипт на Python, который несколько раз использует numpy для вычислений, и приложение Qt, которое вызывает скрипт с использованием pybind11.Используя py::scoped_interpreter
для управления временем жизни интерпретатора, я могу запустить скрипт только один раз;при втором вызове происходит сбой приложения.
Здесь Я нашел решение - управление временем жизни интерпретатора вручную с парой 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, более одного раза?Буду благодарен за любые предложения!