Как поймать сигнал выхода, вызванный Py_Finalize()?
Я использую Pybind11 для встраивания интерпретатора Python в C++ с pybind11::scoped_interpreter guard{}
, Я импортирую свой собственный модуль, запускаю некоторые функции и выхожу из программы. Когда программное обеспечение завершается, pybind11 в конце концов вызывает Py_Finalize()
, Я хочу поймать сигнал выхода внутри моего модуля Python для вызова некоторых деструкторов, когда Py_Finalize()
вызывается внутри C++. Как я могу этого достичь?
Код C++:
pybind11::scoped_interpreter guard{};
py::module my_module = py::module::import("my_module");
my_module.attr("my_function")(someData);
код Python (my_module.py):
session.init()
def my_func(input):
output = session.foo(input)
return output
#how to catch exit signal to run this function
def run_at_exit(session):
session.finalize()