问题标签 [keyboardinterrupt]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 如何在 Python 中识别不可使用 CTRL +C 中断的代码的原因
我正在使用请求来提取一些文件。我注意到在从 5K 到 20K 的大量迭代之后,该程序似乎挂起。我可以说它挂了,因为存储结果的文件夹在几个小时内没有改变。我一直试图通过按 CTRL + C 来中断进程(我正在使用 IDLE),但无济于事。我想中断而不是终止进程,因为重新启动更容易。我终于不得不终止这个过程。我重新启动,它再次运行良好,直到我有相同的症状。我想弄清楚如何诊断问题,但由于我不得不杀死所有东西,所以我不知道从哪里开始。
是否有其他方法可以查看正在发生的事情或更有效地中断该过程?
我一直在假设,如果我可以在不杀戮的情况下中断,我可以查看全局变量,或者做一些其他的事情来弄清楚我的代码挂在哪里。
mpi - mpirun 的自定义中断处理程序
显然,mpirun
使用 SIGINT 处理程序将 SIGINT 信号“转发”到它产生的每个进程。
这意味着您可以为启用 mpi 的代码编写中断处理程序,执行mpirun -np 3 my-mpi-enabled-executable
,然后将为三个进程中的每一个进程引发 SIGINT。不久之后,mpirun 退出。当您有一个仅打印错误消息然后退出的小型自定义处理程序时,这可以正常工作。但是,当您的自定义中断处理程序正在执行一项重要的工作(例如,进行严肃的计算或持久化数据)时,处理程序不会运行到完成。我假设这是因为 mpirun 决定过早退出。
这是执行后按下ctrl-c
(即导致 SIGINT)时的标准错误my-mpi-enabled-executable
。这是理想的预期行为:
这是ctrl-c
执行后按下时的标准错误mpirun -np 1 my-mpi-enabled-executable
。这是有问题的行为:
回答以下任何问题将解决我的问题:
- 如何覆盖 mpirun SIGINT 处理程序(如果可能的话)?
- 如何避免在 mpirun 终止后立即终止生成的进程 mpirun?
- 在 mpirun 终止之前,mpirun 可能会向子进程发送另一个信号吗?
- 有没有办法“捕获”所谓的“信号0(未知信号0)”(参见上面的第二个stderr)?
我在 Linux 上运行 openmpi-1.6.3。
python - 将按钮释放视为键盘中断 tkinter
我在 Python 3 中使用 tkinter 创建一个程序,但我被卡住了......我有无限循环,由按下按钮触发:
如何在释放 button13 时终止 task13?是否有“键盘中断”代码或者我可以修改循环?
python - Python清理键盘中断
我有一个 python 脚本,我在其中使用线程来等待我的树莓派上的输入。这是我第一次使用线程,我在处理键盘中断时遇到了一些困难。这不是一个真正的问题,但如果用户提前按下 control-c,就像程序一启动,python 就会吓坏并喷出一个充满导入错误的控制台。我尝试将导入包装在 try - excepts 中,但这似乎不起作用。我感觉它与线程有关,因为我以前从未遇到过这个问题。
除了将所有内容包装在 try-excepts 中,我还尝试了:
我听说在加载之前不允许键盘中断?
反正有没有让python在键盘中断上做任何事情?
任何帮助,将不胜感激。谢谢!
我的代码:
python - Cython, Python and KeyboardInterrupt ignored
Is there a way to interrupt (Ctrl+C
) a Python script based on a loop that is embedded in a Cython extension?
I have the following python script:
This runs a loop that is part of a C++ Cython extension.
Then, while pressing Ctrl+C
, the KeyboardInterrupt
is thrown but ignored, and the program keeps going until the end of the simulation.
The work around I found, is to handle the exception from within the extension by catching the SIGINT
signal :
Then :
Can't I make this work from Python, or at least from Cython instead ? As I am about to port my extension under Windows/MinGW, I would appreciate to have something less Linux specific.
python - 捕获键盘中断以阻止 Python 多处理工作人员处理队列
从 stackoverflow 上的几篇文章中,我创建了这段代码。
设想
我想要一个 multiprocessing.queue 几个工人“听”
在键盘中断的情况下,主进程不应再将新项目放入队列中,并且在哨兵对象的帮助下,工作人员应该优雅地停止。
问题
我使用的当前版本的问题
忽略 Ctrl + C 是它也被主进程忽略。
有任何想法吗 ?我需要使用多处理工作池吗?一些例子表明我可能不得不这样做。那么我还能使用队列吗?
python - Python - 无法使用 KeyboardInterrupt 杀死主线程
我正在制作一个简单的多线程端口扫描器。它扫描主机上的所有端口并返回打开的端口。问题是中断扫描。完成扫描需要很长时间,有时我希望在扫描过程中使用 Cc 杀死程序。问题是扫描不会停止。主线程被锁定在 queue.join() 并且忽略了 KeyboardInterrupt,直到队列中的所有数据都被处理,从而解除阻塞主线程并优雅地退出程序。我所有的线程都被守护了,所以当主线程死时,他们应该和他一起死。
我尝试使用信号库,没有成功。覆盖 threading.Thread 类并添加优雅终止的方法不起作用......主线程在执行 queue.join() 时不会收到 KeyboardInterrupt
编辑:
我通过使用时间模块找到了解决方案。
matlab - 在 Matlab 中,是否可以终止脚本,但将其所有内部变量保存到工作区?
我正在运行一个脚本,但它花费的时间太长,所以我想终止该脚本。然而,它计算了很多我不想丢弃的数据。是否有替代方法可以ctrl-C
将内部函数变量保存到工作区?
理想情况下,我正在寻找类似的Matlab键盘快捷键ctrl-C
,但如果真的无法做到,也许有一种方法可以在我的函数脚本中执行此操作。知道如何让我的脚本ctrl-C
也做出反应,或者我可以取消一个 GUI 元素,然后我通过我的脚本保存变量?
我发现了一些类似的问题,但没有回答我的问题:
不同的问题,相似的答案:
编辑:
这个问题是不同的,因为提问者的问题是不同的:他们想知道错误在哪里,在我的例子中,Matlab 已经说过了。我只想在它发生时将所有数据保留在工作内存中。
python - Python主线程中断
谁能解释一下interrupt_main() 方法在Python 中是如何工作的?
我有这段 Python 代码:
当我尝试运行它时,它给了我以下输出:
但是,如果我手动中断程序(CTRL-C),线程被正确中断:
为什么在第一个示例中线程中断仅在 10 秒(而不是 5 秒)后发生?
我找到了一个古老的线程 n Python mailing list,但它几乎没有解释任何内容。
python - Python 2.7:子线程未捕获 KeyboardInterrupt
在执行上面的代码时,当我按下 Ctrl-C 时,主线程在从它的 finally 子句打印后退出。现在,由于子线程是一个非守护进程,它仍然在 try: except KeyboardInterrupt 块中运行。然而,这个子线程似乎没有响应 Ctrl-C,即使它应该捕获 KeyboardInterrupt 异常。为什么?