我用IDLE编写了一个程序来标记文本文件,然后开始标记349个文本文件!我该如何阻止它?如何停止正在运行的Python程序?
Answers:
要停止程序,只需按Control + C。
^C
在终端上,并且系统监视器显示python仍在使用大量CPU ...
Ctrl + Z
(至少在Linux上)。然后,如果您想杀死它,kill %n
请在按时在“停”旁边得到的数字“ n”处运行Ctrl + Z
。如果要恢复它,请运行fg
。
如果exit()
在代码中使用该函数,也可以执行此操作。更理想的是,您可以这样做sys.exit()
。即使您通过软件包并行运行程序sys.exit()
,也可能终止Python multiprocessing
。
注意:为了使用sys.exit()
,您必须将其导入:import sys
sys.exit(1)
不会停止该过程。我基本上有多个线程,并且每个线程都在由发起的外部进程上阻塞Popen
。我需要一个核选项来杀死Python进程以及Python进程本身创建的所有子进程。到目前为止找不到。
如果您的程序在交互式控制台上运行,则按CTRL+C将KeyboardInterrupt
在主线程上引发异常。
如果您的Python程序没有捕获到它,KeyboardInterrupt
则会导致Python退出。但是,一个except KeyboardInterrupt:
块或类似裸露的东西except:
将阻止此机制实际停止脚本的运行。
有时,如果KeyboardInterrupt
无法正常工作,您可以发送SIGBREAK
信号。在Windows上,解释器可以处理CTRL+Pause/Break而不生成可捕获的KeyboardInterrupt
异常。
但是,这些机制主要仅在Python解释器正在运行并响应操作系统事件时才起作用。如果Python解释器由于某种原因没有响应,则最有效的方法是终止运行解释器的整个操作系统进程。其机制因操作系统而异。
在Unix风格的shell环境,您可以按CTRL+Z来中止任何进程当前控制的控制台。返回shell提示后,您可以使用jobs
它列出挂起的作业,并可以使用杀死第一个挂起的作业kill %1
。(如果要重新开始运行,可以使用fg %1
;在前台继续执行作业;有关更多信息,请阅读Shell的作业控制手册。)
另外,在Unix或类似Unix的环境中,您可以找到Python进程的PID(进程标识符)并用PID杀死它。使用类似的方法ps aux | grep python
来查找正在运行的Python进程,然后使用kill <pid>
发送SIGTERM
信号。
kill
Unix上的命令SIGTERM
默认发送,Python程序可以安装信号处理程序以SIGTERM
使用该signal
模块。从理论上讲,任何用于的信号处理程序SIGTERM
都应正常关闭进程。但是有时,如果进程卡住了(例如,在不间断的IO睡眠状态下被阻塞),则SIGTERM
信号无效,因为该进程甚至无法唤醒以处理该信号。
为了强行终止不响应信号的进程,您需要发送SIGKILL
信号,有时称为,kill -9
因为它9
是SIGKILL
常量的数值。在命令行中,您可以使用kill -KILL <pid>
(或kill -9 <pid>
简称)发送aSIGKILL
并立即停止该进程运行。
在Windows上,您没有Unix的进程信号系统,但是您可以使用TerminateProcess
函数强制终止正在运行的进程。以交互方式,最简单的方法是打开任务管理器,找到python.exe
与您的程序相对应的进程,然后单击“结束进程”按钮。您也可以将taskkill
命令用于类似目的。
Ctrl + C
。exit()
,您可以执行此操作。pkill -f name-of-the-python-script
。python script.py&
Ctrl-Break 比Ctrl-C更强大
要使用键盘停止python脚本,请执行以下操作:Ctrl
+C
使用代码停止它(这在Python 3上对我有用):
import os
os._exit(0)
您还可以使用:
import sys
sys.exit()
要么:
exit()
要么:
raise SystemExit
如果您在Jupyter Notebook中,则exit()会杀死内核,所以这不是一个好主意。raise
命令将停止程序。
要停止程序,只需按CTRL+D
或exit()
。
按Ctrl+ Alt+ Delete,将弹出任务管理器。找到正在运行的Python命令,右键单击它,然后单击“停止”或“杀死”。
ctrl+c
应该杀死它。或者,kill -9
它