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

MAC*_*CEE 60 python termination execution terminate

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

Ami*_*mir 53

如果exit()在代码中使用该功能,也可以执行此操作.更理想的是,你可以做到sys.exit().sys.exit()即使您通过multiprocessing包并行运行,也可能会终止Python .

  • 注意:我可以找到sys.exit(1)不会停止进程的示例。我基本上有多个线程,每个线程都在`Popen`启动的外部进程上阻塞。我需要一个核选项来杀死Python进程以及Python进程本身创建的所有子进程。到目前为止找不到。 (3认同)
  • sys.exit()由于某种原因没有停止我的代码 (2认同)

Chr*_*ian 42

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

  • 这个方法适用于我的Windows笔记本电脑,但在我的Linux桌面上,它在终端显示`^ C`,系统监视器显示python仍在使用大量CPU ... (17认同)
  • @Gathide 如果要暂停进程并将其置于后台,请按“Ctrl + Z”(至少在 Linux 上)。然后,如果你想杀死它,运行 `kill %n`,其中“n”是你按下 `Ctrl + Z` 时在“Stopped”旁边得到的数字。如果你想恢复它,运行`fg`。 (13认同)

小智 33

使用键盘停止 python 脚本:Ctrl+C

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

import os
os._exit(0)
Run Code Online (Sandbox Code Playgroud)

您还可以使用:

import sys
sys.exit()
Run Code Online (Sandbox Code Playgroud)

或者:

exit()
Run Code Online (Sandbox Code Playgroud)

或者:

raise SystemExit
Run Code Online (Sandbox Code Playgroud)

  • 只有 os._exit(0) 对我有用,但由于某种原因,所有其他人都没有,很高兴我找到了 os 之一,谢谢! (4认同)

Dan*_*den 22

如果您的程序在交互式控制台上运行,则按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>简称)发送SIGKILL并立即停止进程.

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


Sco*_* P. 21

Ctrl-Break 它比Ctrl-C更强大

  • 就像Daniel Pryden在回答中阐明的那样,对于像我一样困惑的人,键盘上的Break键也可以标记为Pause。:) (2认同)

wpp*_*wpp 20

  • 要停止python脚本,只需按Ctrl + C.
  • 在脚本里面exit(),你可以做到.
  • 您只需退出即可在交互式脚本中执行此操作.
  • 你可以用pkill -f name-of-the-python-script.

  • 当您以分离模式运行脚本时,最后一个选项特别有用,例如 ```python script.py&amp;``` (2认同)

Cha*_*a07 17

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

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

import sys
sys.exit()
Run Code Online (Sandbox Code Playgroud)

  • 如果从子进程调用,这将不起作用。 (3认同)

Viv*_*mar 7

要停止程序,只需按CTRL+D

或者exit()


小智 6

如果您正在使用 Spyder,请使用CTRL+ . ,您将重新启动内核,同时您还将停止该程序。


Den*_*nis 5

您还可以使用Activity Monitor来停止 py 进程


Juk*_*uke 5

Ctrl+Z应该这样做,如果你陷入了 python shell。请记住,脚本的实例可以继续在后台运行,因此在 linux 下您必须杀死相应的进程。


小智 5

当我在 linux 终端上运行 python 脚本时,CTRL+\可以工作。(不是CRTL+CD


小智 5

Control+D在 Windows 10 上适用于我。此外,放在exit()最后也适用。


Cha*_*uad 5

如果您在 Jupyter Notebook 中,exit() 将杀死内核,因此这不是一个好主意。raise命令将停止程序。