当前位置: 首页 > 知识库问答 >
问题:

如何停止/终止python脚本的运行?(再次)

龙景澄
2023-03-14

背景:

我有一个运行的python脚本。它包含许多操作系统。系统(“./executablene”)在循环中调用。

如果我按ctrlC,它只是停止执行当前的./officutableNane并传递到下一个。

问题:

如何停止整个脚本的执行,而不仅仅是当前调用的可执行文件的执行?

请注意,我已经仔细阅读了这里的问题/答案,但是即使使用die,我也可以杀死可执行文件,但不能杀死整个脚本(我无法使用top找到)。

我必须停止脚本(不重新启动系统)的唯一方法是继续在循环中按ctrl C,直到所有测试完成。

共有2个答案

吴松
2023-03-14

这个问题的另一个解决方案(作者@Quillan Kaseman)比我找到的解决方案要优雅得多。当我按下CtrlZ而不是CtrlC时,我所有的问题都解决了。

事实上,我不知道为什么使用Z有效,而使用C无效。(稍后我将尝试查找一些详细信息)。

米树
2023-03-14

可以使用子进程和信号处理程序来完成此操作。您还可以使用子进程通过子进程接收和发送信息。PIPE,您可以在留档中阅读更多信息。

以下是您希望做什么的基本示例:

import subprocess
import signal
import sys

def signal_handler(sig, frame):
    print("You pressed Ctrl+C, stopping.")
    print("Signal: {}".format(sig))
    print("Frame: {}".format(frame))

    sys.exit(123)

# Set up signal handler
signal.signal(signal.SIGINT, signal_handler)

print("Starting.")
while True:
    cmd = ['sleep', '10']
    p = subprocess.Popen(cmd)
    p.wait()
    if p.returncode != 0:
        print("Command failed.")
    else:
        print("Command worked.")
 类似资料:
  • 问题内容: 我用IDLE编写了一个程序来标记文本文件,然后开始标记349个文本文件!我该如何阻止它?如何停止正在运行的Python程序? 问题答案: 要停止程序,只需按 + 。

  • 我写了一个程序在IDLE令牌化文本文件,它开始令牌349文本文件!我怎样才能阻止它?如何停止正在运行的Python程序?

  • 我为浏览器游戏制作了脚本。在这个游戏中,我站着不动,我的脚本在某些地方点击bksononechno,但我需要的是,如果我点击字母,这个脚本将自杀,而不是试图关闭浏览器及其在浏览器中的选项卡和类似的东西。 抱歉出错了。

  • 问题内容: 我知道中的命令会尽早停止脚本。 如何在Python中执行此操作? 问题答案: sys模块文档中的详细信息: 从Python退出。这是通过引发SystemExit异常来实现的,因此可以执行 try语句的finally子句指定的清除操作,并且有可能在外部级别拦截出口尝试。 可选参数arg可以是给出退出状态的整数(默认为零),也可以是其他类型的对象。如果它是整数,则shell等将零视为“成功

  • 是否有可能停止或中断在事件(如按下按钮)上运行python脚本?有点像中断。 谢谢

  • 问题内容: 我写了Python脚本来处理大量的大文本文件,并且可能 要花费很多时间 。有时,需要停止正在运行的脚本并在以后恢复它。停止脚本的可能原因是程序崩溃,磁盘空间不足或需要执行此操作的其他原因。我想为脚本实现一种“停止/恢复”机制。 在 车站 :脚本退出和保存其当前状态。 在 简历 :剧本开始,但是从最新的保存状态持续 我将使用 pickle 和 信号 模块来实现它。 我将很高兴听到如何以p