Python中文
首页
教程
问答
标签
搜索
登录
注册
Cython、Python和键盘中断被忽略
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>有没有一种方法可以基于嵌入在Cython扩展中的循环来中断(<code>Ctrl+C</code>)Python脚本?在</p> <p>我有以下python脚本:</p> <pre><code>def main(): # Intantiate simulator sim = PySimulator() sim.Run() if __name__ == "__main__": # Try to deal with Ctrl+C to abort the running simulation in terminal # (Doesn't work...) try: sys.exit(main()) except (<a href="https://www.cnpython.com/pypi/keyboard" class="inner-link">keyboard</a>Interrupt, SystemExit): print '\n! Received keyboard interrupt, quitting threads.\n' </code></pre> <P>运行一个循环,它是C++ Cython扩展的一部分。 然后,当按下<code>Ctrl+C</code>时,<code>KeyboardInterrupt</code>被抛出但被忽略,程序继续运行直到模拟结束。在</p> <p>我发现的解决方法是通过捕捉<code>SIGINT</code>信号从扩展内部处理异常:</p> ^{pr2}$ <p>然后:</p> <pre><code>signal(SIGABRT, handler); signal(SIGFPE, handler); signal(SIGILL, handler); signal(SIGINT, handler); signal(SIGSEGV, handler); signal(SIGTERM, handler); </code></pre> <p>我不能用Python或者至少用Cython来实现吗?由于我即将在Windows/MinGW下移植我的扩展,所以我希望有一些不太适合Linux的东西。在</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>当Cython运行与Python不接口的部分时,释放GIL,在主线程中运行loop(休眠或检查模拟状态),并在<code>except</code>close中调用<code>sim.Stop()</code>(它可以设置一些标志,仿真可以定期检查)。在</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
如何添加虚拟方法
9 回答
如何添加表示整数的擦边字符串?
5 回答
如何添加要在Bokeh中使用的新font.ttf文件?
8 回答
如何添加要显示的矩阵XY轴编号和XY轴
3 回答
如何添加计数?
8 回答
如何添加计数器函数?
7 回答
如何添加计数器列来计算数据帧中另一列中的特定值?
3 回答
如何添加计数器来跟踪while循环中的月份和年份?
5 回答
如何添加计数并删除countplot的顶部和右侧脊椎?
9 回答
如何添加计时器wx.应用程序更新窗口对象的主循环?
4 回答
如何添加评论到帖子?PostDetailVew,Django 2.1.5
7 回答
如何添加评论拉梅尔亚姆
2 回答
如何添加诸如矩阵Python/Pandas之类的数据帧?
2 回答
如何添加谷歌地点自动完成到Flask?
7 回答
如何添加超时、python discord bot
1 回答
如何添加超过1dp的检查
9 回答
如何添加距离方法
4 回答
如何添加跟随游戏的敌人精灵
4 回答
如何添加路径以便python可以找到程序?
8 回答
如何添加身份验证/安全性以使用happybase访问HBase?
4 回答