【问题标题】:How to stop/terminate a python script from running?如何停止/终止运行 python 脚本?
【发布时间】:2013-11-15 22:03:10
【问题描述】:

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

【问题讨论】:

  • ctrl+c 应该杀死它。或者,kill -9it
  • 这里的许多答案都是特定于平台的。搜索您的平台(Windows、Linux、Mac 还是其他?)

标签: python execution terminate termination


【解决方案1】:

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

【讨论】:

  • 这个方法在我的windows笔记本上有效,但在我的linux桌面上,终端显示^C,系统监视器显示python仍在使用大量CPU...
  • 脚本停止后是否可以恢复?
  • @Gathide 如果您想暂停进程并将其置于后台,请按Ctrl + Z(至少在 Linux 上)。然后,如果您想杀死它,请运行kill %n,其中“n”是您按下Ctrl + Z 时“已停止”旁边的数字。如果你想恢复它,运行fg
  • 如果程序中有一般的 except: 子句,则不起作用。 except: 捕获中断,做某事(或不做),然后程序愉快地继续。
  • @DragonLord 您的一般例外应该有一个特殊的例外,除了由 Ctrl+C 引发的错误。无论如何,通常不鼓励一般例外。
【解决方案2】:

你也可以使用Activity Monitor来停止py进程

【讨论】:

    【解决方案3】:

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

    注意:要使用sys.exit(),您必须导入它:import sys

    【讨论】:

    • 注意:我可以找到sys.exit(1) 不会停止进程的示例。我基本上有多个线程,每个线程都阻塞由Popen 启动的外部进程。我需要一个核选项来杀死 Python 进程以及 Python 进程本身创建的所有子进程。暂时没找到。
    • sys.exit() 不会终止进程,但会引发 SystemExit 异常,该异常不会通过关闭程序来停止执行
    【解决方案4】:
    • 要停止 python 脚本,只需按 Ctrl + C
    • 在带有exit() 的脚本中,您可以这样做。
    • 您可以在交互式脚本中执行此操作,只需退出。
    • 您可以使用pkill -f name-of-the-python-script

    【讨论】:

    • 最后一个选项在以分离模式运行脚本时特别有用,例如python script.py&
    【解决方案5】:

    Ctrl-BreakCtrl-C

    更强大

    【讨论】:

    • 就像 Daniel Pryden 在他的回答中阐明的那样,对于像我这样困惑的人来说,键盘上的 Break 键也可以标记为 Pause。 :)
    【解决方案6】:

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

    exit()

    【讨论】:

      【解决方案7】:

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

      【讨论】:

      • 这在运行(许多)并行进程时很有用,而 CTRL-C 不会全部杀死它们。在 CTRL-Z 之后,您可以检查 jobspskill 8923754 或您需要杀死的任何作业 ID/进程 ID
      【解决方案8】:

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

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

      import sys
      sys.exit()
      

      【讨论】:

      • 如果从子进程调用,这将不起作用。
      【解决方案9】:

      Ctrl+Alt+Delete,会弹出任务管理器。找到正在运行的 Python 命令,右键单击它,然后单击停止或终止。

      【讨论】:

        【解决方案10】:

        当我在 linux 终端上运行 python 脚本时,CTRL+\ 有效。 (不是 CRTL + CD

        【讨论】:

          【解决方案11】:

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

          如果您的 Python 程序没有捕获它,KeyboardInterrupt 将导致 Python 退出。但是,except KeyboardInterrupt: 块或类似裸露的except: 将阻止此机制实际停止脚本运行。

          有时如果KeyboardInterrupt 不起作用,您可以发送SIGBREAK 信号代替;在 Windows 上,CTRL + Pause/Break 可以由解释器处理,而不会生成可捕获的 KeyboardInterrupt 异常。

          但是,这些机制主要仅在 Python 解释器正在运行并响应操作系统事件时才有效。如果 Python 解释器由于某种原因没有响应,最有效的方法是终止运行解释器的整个操作系统进程。其机制因操作系统而异。

          在 Unix 风格的 shell 环境中,您可以按 CTRL + Zsuspend 当前控制控制台的任何进程。一旦返回 shell 提示符,您可以使用 jobs 列出暂停的作业,您可以使用 kill %1 终止第一个暂停的作业。 (如果您想重新开始运行,您可以使用fg %1 在前台继续该作业;请阅读您的shell 的作业控制手册了解更多信息。)

          或者,在 Unix 或类 Unix 环境中,您可以找到 Python 进程的 PID(进程标识符)并通过 PID 将其杀死。使用ps aux | grep python 之类的东西来查找正在运行的Python 进程,然后使用kill <pid> 发送SIGTERM 信号。

          Unix 上的kill 命令默认发送SIGTERM,Python 程序可以使用signal 模块为SIGTERM 安装信号处理程序。理论上,SIGTERM 的任何信号处理程序都应该优雅地关闭进程。但有时如果进程卡住了(例如,阻塞在不可中断的 IO 睡眠状态),SIGTERM 信号将不起作用,因为进程甚至无法唤醒处理它。

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

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

          【讨论】:

            【解决方案12】:

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

            【讨论】:

              【解决方案13】:

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

              【讨论】:

                【解决方案14】:

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

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

                import os
                os._exit(0)
                

                你也可以使用:

                import sys
                sys.exit()
                

                或:

                exit()
                

                或:

                raise SystemExit
                

                【讨论】:

                • 谢谢。 SystemExit 是要走的路。
                • 只有 os._exit(0) 对我有用,但由于某种原因,其他所有都没有,很高兴我找到了一个 os,谢谢!
                【解决方案15】:
                如果您在 Jupyter Notebook 中,

                exit() 将杀死内核,所以这不是一个好主意。 raise 命令将停止程序。

                【讨论】:

                  【解决方案16】:

                  Windows 解决方案:Control + C

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

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

                  【讨论】:

                    【解决方案17】:

                    尝试使用:

                    Ctrl + Fn + S

                    Ctrl + Fn + B

                    【讨论】:

                    • 这些快捷方式到底有什么作用??
                    • @rhoitjadhav,有时在 Windows 中,python 应用程序不会仅通过按“ctrl+c”来停止,而且很多键盘也没有明确的“break”键。因此,如果需要,这些快捷方式可帮助您在终端中停止 Python 应用程序。
                    猜你喜欢
                    • 2020-04-10
                    • 2021-03-20
                    • 2018-12-29
                    • 1970-01-01
                    • 1970-01-01
                    • 2019-07-17
                    • 1970-01-01
                    • 2019-10-14
                    相关资源
                    最近更新 更多