如何让 boost.python 代码知道 python 异常?
例如,
int test_for(){
for(;;){
}
return 0;
}
如果我将其导出到 python,则不会在 Ctrl-C 上中断。我认为其他异常(exception)
不会以这种方式工作。
这是一个玩具示例。我真正的问题是我有一个可能需要数小时才能计算的 C 函数。我想打断它,例如,如果需要更多那个小时。但我不想杀死 python 实例,在函数内被调用。
提前致谢。
最佳答案
在您的 C 或 C++ 代码中,为 SIGINT 安装一个信号处理程序,该处理程序设置一个全局标志,并让长时间运行的函数定期检查该标志,并在设置标志时尽早返回。或者,您可以使用 Python C API 引发 Python 异常,而不是提前返回:请参阅 PyErr_SetInterrupt here 。
关于c++ - Boost.Python 和 Python 异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1008343/