一尘不染

允许Ctrl-C中断python C扩展

linux

我正在(自制)基于C的python扩展中进行一些计算量大的模拟。有时我会出错,并想终止模拟。但是,Ctrl-
C似乎没有任何作用(除了打印^C到屏幕上),因此我必须使用kill或系统监视器终止该进程。

据我所知,python只是等待C扩展完成,并且在这段时间内并没有真正与其通信。

有没有办法使这项工作?

更新 :主要答案(针对我的特定问题)是:1.重写代码以定期将控制权传递回调用方,或2.使用PyErr_CheckSignals()


阅读 216

收藏
2020-06-07

共1个答案

一尘不染

我将重新设计C扩展,以使它们不会长时间运行。

因此,将它们分成更多的基本步骤(每个步骤运行时间很短,例如10到50毫秒),并由Python代码调用这些更多的基本步骤。

作为编程风格,延续传递风格可能与理解有关。

2020-06-07