我正在(自制)基于C的python扩展中进行一些计算量大的模拟。有时我会出错,并想终止模拟。但是,Ctrl- C似乎没有任何作用(除了打印^C到屏幕上),因此我必须使用kill或系统监视器终止该进程。
^C
kill
据我所知,python只是等待C扩展完成,并且在这段时间内并没有真正与其通信。
有没有办法使这项工作?
更新 :主要答案(针对我的特定问题)是:1.重写代码以定期将控制权传递回调用方,或2.使用PyErr_CheckSignals()
PyErr_CheckSignals()
我将重新设计C扩展,以使它们不会长时间运行。
因此,将它们分成更多的基本步骤(每个步骤运行时间很短,例如10到50毫秒),并由Python代码调用这些更多的基本步骤。
作为编程风格,延续传递风格可能与理解有关。