当前位置: 首页 > 面试题库 >

如何“停止”和“恢复”长时间运行的Python脚本?

澹台浩广
2023-03-14
问题内容

我写了Python脚本来处理大量的大文本文件,并且可能 要花费很多时间
。有时,需要停止正在运行的脚本并在以后恢复它。停止脚本的可能原因是程序崩溃,磁盘空间不足或需要执行此操作的其他原因。我想为脚本实现一种“停止/恢复”机制。

  • 车站 :脚本退出和保存其当前状态。
  • 简历 :剧本开始,但是从最新的保存状态持续

我将使用 pickle信号 模块来实现它。

我将很高兴听到如何以pythonic方式进行操作。

谢谢!


问题答案:

这很简单,希望可以对您有所帮助:

import time
import pickle


REGISTRY = None


def main(start=0):
    """Do some heavy work ..."""

    global REGISTRY

    a = start
    while 1:
        time.sleep(1)
        a += 1
        print a
        REGISTRY = pickle.dumps(a)


if __name__ == '__main__':
    print "To stop the script execution type CTRL-C"
    while 1:
       start = pickle.loads(REGISTRY) if REGISTRY else 0
        try:
            main(start=start)
        except KeyboardInterrupt:
            resume = raw_input('If you want to continue type the letter c:')
            if resume != 'c':
                break

运行示例:

$ python test.py
To stop the script execution type CTRL-C
1
2
3
^CIf you want to continue type the letter c:c
4
5
6
7
8
9
^CIf you want to continue type the letter c:
$ python test.py


 类似资料:
  • 问题内容: 我用IDLE编写了一个程序来标记文本文件,然后开始标记349个文本文件!我该如何阻止它?如何停止正在运行的Python程序? 问题答案: 要停止程序,只需按 + 。

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

  • 背景: 我有一个运行的python脚本。它包含许多在循环中调用。 如果我按ctrlC,它只是停止执行当前的并传递到下一个。 问题: 如何停止整个脚本的执行,而不仅仅是当前调用的可执行文件的执行? 请注意,我已经仔细阅读了这里的问题/答案,但是即使使用,我也可以杀死可执行文件,但不能杀死整个脚本(我无法使用找到)。 我必须停止脚本(不重新启动系统)的唯一方法是继续在循环中按ctrl C,直到所有测试

  • 我有以下代码,它在while循环中不断检查当前时间,当它最终匹配定义的time\u时,就会在if语句中运行代码。 此外,欢迎提出任何改进建议。 提前感谢您!

  • 安装Jenkins后,我很困惑如何停止/启动Jenkins。使用此脚本在我的终端上进行战争 java-JarJenkins。war-httpPort=8080 原因如果再次运行上述代码,可能是错误原因端口已在使用中。我可以卸载它,但如果我需要Jenkins,我必须卸载它,然后重新安装,这就像浪费时间一样。需要知道如何在不卸载已安装的jenkins的情况下停止/启动命令的人 谢谢

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