Как поймать сигнал выхода, вызванный 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()

0 ответов

Другие вопросы по тегам