Код: Выделить всё
struct PythonModule {
static std::function m_function;
static void setCallback(std::function &function) {
m_function = function;
}
static void call() {
m_function();
}
};
PYBIND11_EMBEDDED_MODULE(MyModule, m) {
m.def("set_callback", &PythonModule::setCallback);
};
Код: Выделить всё
def test_function():
import time
print('Start')
time.sleep(3.0)
print('End')
MyModule.set_callback(test_function)
Код: Выделить всё
PythonModule::call();
PythonModule::call();
PythonModule::call();
Код: Выделить всё
Start
End
Start
End
Start
End
Есть ли способ вызвать эту функцию из C++ через Pybind11 в асинхронный или многопоточный способ?
Чтобы результат был таким:
Код: Выделить всё
Start
Start
Start
End
End
End
Код: Выделить всё
import asyncio
def call_callback(callback):
asyncio.ensure_future(callback)
Подробнее здесь: https://stackoverflow.com/questions/782 ... h-pybind11
Мобильная версия