【问题标题】:How do I pause/resume a Python script?如何暂停/恢复 Python 脚本?
【发布时间】:2013-10-26 00:50:49
【问题描述】:

我在我的 macbook air 上运行 python 脚本来处理来自外部 API 的数据,通常需要几个小时甚至几天。

但是,有时我需要在运行脚本的过程中暂停我的笔记本电脑,以便我可以去上班或回家或类似的事情。

如何在它们的for 循环中间简单地暂停/恢复这些脚本?

我可以在脚本级别添加一些非常简单的东西,只监听特定的击键以停止/开始吗?或者我可以在 *nix 进程管理级别做些什么?

我很清楚Pickle,但我宁愿不处理序列化/反序列化数据的麻烦——因为我所做的只是让 mac 休眠,我希望脚本是否暂停然后我休眠,OS X 将处理将 RAM 保存到磁盘,然后在我重新打开计算机时恢复到 RAM。到那时,我可以按一个简单的键来继续 python 脚本。

由于我在不同的 wifi 网络之间切换,当我的脚本尝试访问互联网以访问第 3 方 API 时,不确定不同的 IP 是否会导致问题。

【问题讨论】:

  • CTRL+z 将暂停进程,直到您决定使用fg 再次恢复它。您也可以简单地合上盖子(让您的 macbook 休眠),这将为您暂停该过程(但这有点冒险,取决于您使用的 API)
  • CTRL+z 和fg 听起来像我一直在寻找的东西——即使我的计算机获得了新的 IP 地址,它们还能工作吗?不确定 Python 是否会重新启动网络连接...外部 API 不是问题——每次调用最多只需要 2-3 秒就可以返回响应并最终关闭连接。
  • IP 问题不应导致 PYTHON 出现任何问题。 API 可能会对 IP 更改产生问题,但您说这不应该发生。所以看起来这就是你想要的。我将添加此作为答案,因为它似乎是您正在寻找的内容

标签: macos python-2.7 resume


【解决方案1】:

这原本是一条评论,但它似乎是 OP 想要的,所以我将其重新发布为答案

我会使用 ctrl+z 来暂停您正在运行的实时进程。这将为您留下一个 PID,您可以稍后通过调用 fg:fg <job-number> 来恢复它。
这不应该对更改的网络设置(如 IP 等)有任何影响,至少就 python 而言。不过,我无法确定 API 是否会崩溃

【讨论】:

  • 一个问题 - <PID> 准确还是应该是工作编号? Otherresources参考本案例的工作编号。
猜你喜欢
  • 2021-07-16
  • 1970-01-01
  • 1970-01-01
  • 2021-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-14
相关资源
最近更新 更多