jjzjj

KeyboardInterrupt

全部标签

Python:当 KeyboardInterrupt 被转发到多处理子进程时?

我在Windows上执行了以下测试代码:importmultiprocessingimporttimedefchild():whileTrue:time.sleep(2)if__name__=='__main__':multiprocessing.Process(target=child).start()whileTrue:time.sleep(1)如果我在它工作时按Ctrl-C,我会看到两个KeyboardInterrupt异常-一个用于sleep(1)和一个用于sleep(2)。主process中的键盘中断是如何转发给子process的?它们毕竟是进程,而不是线程:(。

python - 为什么这个 Python 键盘中断不起作用? (在 PyCharm 中)

在PyCharm中调试我的代码时,当按下Ctrl+C时,我的Pythontry/except循环似乎没有触发键盘中断。(在运行程序时使用Ctrl+C会出现同样的问题,但在PyCharmPython控制台中不会出现。)我的代码是这样的:try:whileloop:print("busy")exceptKeyboardInterrupt:exit()完整代码可以查看here.上面的代码产生相同的错误。 最佳答案 我知道这是一个老问题,但我遇到了同样的问题并认为有一个更简单的解决方案:在PyCharm中转到“运行”/“编辑配置”并选中“在

python - tkinter:KeyboardInterrupt 需要一段时间

在Linux上将Tkinter与Python结合使用,我试图通过使用KeyboardInterrupt异常让Ctrl+C停止执行,但是当我按下它时有一段时间没有任何反应。最终它“接受”并退出。示例程序:importsysfromTkinterimport*try:root=Tk()root.mainloop()except:print("youpressedcontrolc")sys.exit(0)程序如何才能更快地使用react? 最佳答案 这有点问题,因为在一般情况下,在调用mainloop方法后,您将依赖Tcl来处理事件。由于

python - 通过 KeyboardInterrupt 停止 pyzmq 接收器

正在关注thisØMQ文档中的示例,我正在尝试创建一个简单的接收器。该示例使用无限循环。一切正常。但是,在MSWindows上,当我按下CTRL+C以引发KeyboardInterrupt时,循环不会中断。似乎recv()方法以某种方式忽略了异常。但是,我很想通过按CTRL+C而不是终止它来退出该过程。这可能吗? 最佳答案 响应@Cyclone的请求,我建议以下作为可能的解决方案:importsignalsignal.signal(signal.SIGINT,signal.SIG_DFL);#anypyzmq-relatedcode

python - 带有 GPIO.setup 和 GPIO.cleanup 的 RuntimeWarnings 不适用于 KeyboardInterrupt

我的代码在使用raspberrypi时遇到问题。我刚开始使用Python,所以我需要一些帮助。这是代码:importRPi.GPIOasGPIOimporttimeGPIO.setmode(GPIO.BCM)led1=22led2=17GPIO.setup(led1,GPIO.OUT)GPIO.setup(led2,GPIO.OUT)defblink():GPIO.output(led1,1)time.sleep(1)GPIO.output(led1,0)GPIO.output(led2,1)time.sleep(1)GPIO.output(led2,0)while(blink):bl

python - 为什么 KeyboardInterrupt 在 python 中不起作用?

为什么像下面这样的代码不能捕获CTRL-C?MAXVAL=10000STEP_INTERVAL=10foriinrange(1,MAXVAL,STEP_INTERVAL):try:printstr(i)exceptKeyboardInterrupt:breakprint"done"我的期望是——如果在程序运行时按下CTRL-C,KeyboardInterrupt应该退出循环。它没有。对我做错了什么有什么帮助吗? 最佳答案 听起来程序在按下control-c时已完成,但您的操作系统尚未完成向您显示所有输出。.

c++ - 如何在 C++ 中传递/捕获/响应 Python 的 KeyboardInterrupt?

我有一个用C++编写的简单库,我正在为使用boost.python创建一个Python包装器。有些函数需要很长时间才能执行(超过30秒),我想让它可以中断,这样当我在python解释器中按ctrl-d触发KeyboardInterrupt时,我能够以某种方式在C++中响应它。有没有办法做到这一点?我在boost.org或python.org上找不到有关中断和boost.python的任何信息。 最佳答案 调用PyErr_CheckSignals()每隔一段时间。 关于c++-如何在C++

python - Python在接收​​到Ctrl+C后会执行finally block吗

如果您使用Ctrl+C停止python脚本,它会执行任何finallyblock,还是会在原处停止脚本? 最佳答案 好吧,答案主要是视情况而定。这是实际发生的情况:Python在try:...finally:block中执行代码发出Ctrl-C并转换为KeyboardInterrupt异常处理被中断,控制传递到finallyblock所以乍一看,一切都按预期工作。但是……当用户(不是你,而是其他人...)想要中断任务时,他通常会多次按下Ctrl-C。第一个将在finallyblock中分支执行。如果另一个Ctrl-C出现在final

python - 如何避免在处理 KeyboardInterrupt 后打印 ^C

今天早上我决定在我的服务器程序中处理键盘中断并优雅地退出。我知道该怎么做,但我挑剔的自己觉得它不够优雅,^C仍然被打印出来。如何避免打印^C?importsysfromtimeimportsleeptry:sleep(5)exceptKeyboardInterrupt,ke:sys.exit(0)按Ctrl+C退出上面的程序,看到^C被打印出来。我可以使用一些sys.stdout或sys.stdin魔法吗? 最佳答案 这是你的shell做的,python与它无关。如果将以下行放入~/.inputrc,它将抑制该行为:setecho-

python - 在 cmd.Cmd 命令行解释器中更好地处理 KeyboardInterrupt

在使用python的cmd.Cmd创建自定义CLI时,如何告诉处理程序中止当前行并给我一个新提示?这是一个最小的例子:#console_min.py#run:'pythonconsole_min.py'importcmd,signalclassConsole(cmd.Cmd):def__init__(self):cmd.Cmd.__init__(self)self.prompt="[test]"signal.signal(signal.SIGINT,handler)defdo_exit(self,args):return-1defdo_EOF(self,args):returnself