如何在 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 中捕获中断信号?
在 Python 中如何捕获 Redshift 对 COPY 命令的响应?