当前位置: 首页 > 面试题库 >

允许Ctrl-C中断python C扩展

郭俊拔
2023-03-14
问题内容

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

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

有没有办法使这项工作?

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


问题答案:

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

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

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



 类似资料:
  • 问题内容: 我正在开发使用C ++并使用Linux GNU C编译器进行编译的应用程序。 我想在用户使用+ 键中断脚本时调用函数。 我该怎么办?任何答案将不胜感激。 问题答案: 按时,操作系统将向该进程发送信号。有许多信号,其中之一是SIGINT。SIGINT(“程序中断”)是终止信号之一。 终止信号还有几种,但是关于SIGINT的有趣的事情是它可以由程序处理(捕获)。SIGINT的默认操作是程序

  • 问题内容: 我想知道Java中是否有特殊原因总是使用“ ”而不是“ ”来定义类型参数的界限。 例: 被禁止但是 是正确的。是什么原因呢? 问题答案: 在类“实现”还是“扩展”之间,通用约束语言没有语义差异。约束可能性是“扩展”和“超级”-也就是说,该类是可分配给其他类的对象(扩展),还是该类可从该类分配(超级)。

  • 本文向大家介绍浅谈ctrl+c,ctrl+d,ctrl+z在linux中的意义,包括了浅谈ctrl+c,ctrl+d,ctrl+z在linux中的意义的使用技巧和注意事项,需要的朋友参考一下 ctrl+c和ctrl+z都是中断命令,但是他们的作用却不一样. ctrl+c是强制中断程序的执行。 ctrl+z的是将任务中断,但是此任务并没有结束,他仍然在进程中他只是维持挂起的状态,用户可以使用fg/b

  • 处理器只在一条指令结束和下一条指令开始之间进行中断服务。当一个串指令有REP前缀时,中断和异常可以在每次叠代期间发生。所以长的串指令不会使处理器长时间不响应中断。 一定的条件和标志设置了以后,处理器会在指令边界禁止一些中断和异常。 9.2.1 NMI 屏蔽后来的NMIS(NMI Masks Further NMIS) 当一个NMI处理程正在执行时,处理器忽略后来的NMI引脚发送过来的中断信号,一直

  • 问题内容: 我应该覆盖信号并使用它来打印消息。它不应该结束程序。 到目前为止,所发生的是,当按下它时,它会打印消息,但会结束程序。 当我问我的教授时,他告诉我要这样做:您需要使信号处理程序不要继续处理信号。现在,信号正在由您的代码处理,然后转到父处理程序。 我应该添加一种方法还是需要将信号安装程序移动到某个地方? 到目前为止,这是我的代码: 问题答案: 哇, 方式 太多的代码去筛选。但是,如果使用