如何在 C++ 中传递/捕获/响应 Python 的 KeyboardInterrupt?

Posted

技术标签:

【中文标题】如何在 C++ 中传递/捕获/响应 Python 的 KeyboardInterrupt?【英文标题】:How do I pass/catch/respond to Python's KeyboardInterrupt in C++? 【发布时间】:2010-10-20 03:53:57 【问题描述】:

我有一个用 C++ 编写的简单库,我正在为使用 boost.python 创建一个 Python 包装器。有些函数需要很长时间才能执行(超过 30 秒),我想让它可中断,这样当我在 python 解释器中按 ctrl-d 触发 KeyboardInterrupt 时,我能够以某种方式在 C++ 中响应它。

有没有办法做到这一点?我在 boost.org 或 python.org 上找不到任何有关中断和 boost.python 的信息。

【问题讨论】:

如果您有一个最小的工作示例,如果您将其包含在内将是最有帮助的。谢谢。 我找到了一个例子here,但是很复杂。碰巧它使用 PyErr_CheckSignals()。 下面的答案,使用 PyErr_CheckSignals() 效果很好。谢谢。 【参考方案1】:

时常致电PyErr_CheckSignals()

【讨论】:

一个最小的完整工作示例在这里会很有帮助。

以上是关于如何在 C++ 中传递/捕获/响应 Python 的 KeyboardInterrupt?的主要内容,如果未能解决你的问题,请参考以下文章

在阻塞 boost c++ 方法中,如何在 Python 中捕获中断信号?

如何通过pybind11在python中捕获C++的异常?

如何在 c++ winform 中的线程之间传递数据?

在 Python 中如何捕获 Redshift 对 COPY 命令的响应?

如何重定向 python 解释器输出并将其捕获到 C++ 程序中的字符串中?

从 C++ 调用 python 函数时如何将 C++ 类作为参数传递?