擅长:python、mysql、java
<blockquote>
<p>However, Ctrl-C doesn't seem to have any effect</p>
</blockquote>
<p><a href="https://unix.stackexchange.com/q/149741/1321">^{<cd1>} in the shell sends ^{<cd2>} to the foreground process group</a>。<code>python</code>接收到信号时用C代码设置一个标志。如果您的C扩展在主线程中运行,那么不会运行任何Python信号处理程序(因此您不会在<code>Ctrl-C</code>上看到<code>KeyboardInterrupt</code>异常),除非您调用检查标志的<a href="https://docs.python.org/3/c-api/exceptions.html#c.PyErr_CheckSignals" rel="noreferrer">^{<cd6>}</a>(这意味着:它不应该减慢速度),并在必要时运行Python信号处理程序,或者如果您的模拟允许Python代码执行(例如。,如果模拟使用Python回调)。如果扩展在后台线程中运行,那么释放GIL就足够了(允许Python代码在主线程中运行,从而使信号处理程序能够运行)。在</p>
<p>相关:<a href="https://stackoverflow.com/q/16769870/4279">Cython, Python and KeybordInterrupt ingored</a></p>