Возможно ли, чтобы pybind11 запускал интерпретатор python в одном потоке в C ++? У меня есть класс, который
- инициализирует интерпретатор, а
- вызывает функцию в сценарии python.
Я хотел бы вызвать эту функцию в нескольких потоках, которые создает C ++.
#include "pybind11/pybind11.h"
#include <iostream>
#include <thread>
namespace py = pybind11;
class callMyPythonFunctionFromCpp
{
callMyPythonFunctionFromCpp() { m_module = py::module::import("mypython_script_file"); }
void myfunc() // trying to call this function on multiple threads.
{
py::object res = m_module.attr("myfunc");
}
private:
py::scoped_interpreter m_guard;
py::module m_module;
};
void thread_function()
{
callMyPythonFunctionFromCpp m;
m.myfunc();
std::cout << "thread function\n";
}
int main()
{
std::thread t(&thread_function);
// ...
return 0;
}