我想在swig生成的包装器代码中的所有实际方法调用之前插入一段代码(比如横切c ++函数调用)。我在.i文件中使用了%exception指令,最终生成了以下包装代码
some_crosscutting_c++_function_call();
try {
{
SWIG_PYTHON_THREAD_BEGIN_ALLOW;// release GIL
actual_c++_function_call();
SWIG_PYTHON_THREAD_END_ALLOW;// acquire GIL
}
}
catch(some exception) {
......
}
但我想要的是以下
try {
{
SWIG_PYTHON_THREAD_BEGIN_ALLOW;//release GIL
some_crosscutting_c++_function_call();
actual_c++_function_call();
SWIG_PYTHON_THREAD_END_ALLOW;//acquire GIL
}
}
catch(some exception) {
......
}
横切函数调用不需要GIL,因此我希望在GIL发布后调用它。有没有办法在real_c ++ _ function_call()之后和SWIG_PYTHON_THREAD_BEGIN_ALLOW之后有一个钩子?