如何停止/终止python脚本的运行?


104

我用IDLE编写了一个程序来标记文本文件,然后开始标记349个文本文件!我该如何阻止它?如何停止正在运行的Python程序?


5
ctrl+c应该杀死它。或者,kill -9
xbonez

1
这里的许多答案都是特定于平台的。搜索您的平台(Windows,Linux,Mac,还是其他?)
Tripleee

Answers:


60

要停止程序,只需按Control + C


23
这种方法在我的Windows笔记本电脑上有效,但是在我的Linux桌面上,它显示^C在终端上,并且系统监视器显示python仍在使用大量CPU ...
user3768495 2015年

停止脚本后是否可以继续执行脚本?
盖德(Gathide)'18

9
@Gathide如果要暂停该过程并将其置于后台,请按Ctrl + Z(至少在Linux上)。然后,如果您想杀死它,kill %n请在按时在“停”旁边得到的数字“ n”处运行Ctrl + Z。如果要恢复它,请运行fg
cluxter

如果您在程序中具有一般的except:子句,则该命令不起作用。例外:捕获中断,执行某项操作(或不执行任何操作),然后程序快乐地继续。
DragonLord

116

如果exit()在代码中使用该函数,也可以执行此操作。更理想的是,您可以这样做sys.exit()。即使您通过软件包并行运行程序sys.exit()也可能终止Python multiprocessing

注意:为了使用sys.exit(),您必须将其导入:import sys


8
注意:我可以找到一些示例,这些示例sys.exit(1)不会停止该过程。我基本上有多个线程,并且每个线程都在由发起的外部进程上阻塞Popen。我需要一个核选项来杀死Python进程以及Python进程本身创建的所有子进程。到目前为止找不到。
Dici

sys.exit()不会终止进程,但会引发SystemExit Exception,该异常不会通过关闭程序停止执行
c24b

37

如果您的程序在交互式控制台上运行,则按CTRL+CKeyboardInterrupt在主线程上引发异常。

如果您的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信号。

killUnix上的命令SIGTERM默认发送,Python程序可以安装信号处理程序以SIGTERM使用该signal模块。从理论上讲,任何用于的信号处理程序SIGTERM都应正常关闭进程。但是有时,如果进程卡住了(例如,在不间断的IO睡眠状态下被阻塞),则SIGTERM信号无效,因为该进程甚至无法唤醒以处理该信号。

为了强行终止不响应信号的进程,您需要发送SIGKILL信号,有时称为,kill -9因为它9SIGKILL常量的数值。在命令行中,您可以使用kill -KILL <pid>(或kill -9 <pid>简称)发送aSIGKILL并立即停止该进程运行。

在Windows上,您没有Unix的进程信号系统,但是您可以使用TerminateProcess函数强制终止正在运行的进程。以交互方式,最简单的方法是打开任务管理器,找到python.exe与您的程序相对应的进程,然后单击“结束进程”按钮。您也可以将taskkill命令用于类似目的。


31
  • 要停止python脚本,只需按Ctrl + C
  • 在脚本中exit(),您可以执行此操作。
  • 您可以在退出后的交互式脚本中进行操作。
  • 您可以使用pkill -f name-of-the-python-script

当您以分离模式运行脚本时,最后一个选项特别有用,例如python script.py&
richar8086

26

Ctrl-BreakCtrl-C更强大


4
就像丹尼尔·普莱登(Daniel Pryden)在回答中阐明的那样,对于像我这样困惑的人,键盘上的Break键也可以标记为Pause。:)
JakeStrang '19

25

要停止正在运行的程序,请使用Ctrl+C终止该过程。

要在python中以编程方式处理它,请导入sys模块并sys.exit()在要终止程序的位置使用。

import sys
sys.exit()

17

要使用键盘停止python脚本,请执行以下操作:Ctrl+C

使用代码停止它(这在Python 3上对我有用):

import os
os._exit(0)

您还可以使用:

import sys
sys.exit()

要么:

exit()

要么:

raise SystemExit

4

如果您陷入python shell中,请按Ctrl +Z。请记住,脚本实例可以在后台继续运行,因此在Linux下,您必须终止相应的进程。


这在运行(许多)并行进程时很有用,而CTRL-C只是不会杀死它们。在CTRL-Z之后,您可以检查jobsps,然后再检查或kill 8923754需要杀死的任何Jobid /进程ID
Paul

3

当我在Linux终端上运行python脚本时,CTRL + \起作用。(不是CRTL + C或D)







0

如果您正在使用Spyder,请使用CTRL +。 (DOT),您将重新启动内核,也将停止程序。


0

Windows解决方案:Control + C

Macbook解决方案:Control (^) + C

另一种方法是打开一个终端,键入top,记下PID您想杀死的进程,然后在终端上键入:kill -9 <pid>

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.