2013-10-26 190 views
2

我在我的macbook air上运行python脚本,处理来自外部API的数据,并且通常需要几个小时甚至几天甚至几天。如何暂停/恢复Python脚本?

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

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

是否有一些非常简单的东西,我可以在脚本级别添加,只是侦听特定的关键笔画停止/启动?或者我可以在* nix进程管理级别上做些什么?

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

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

+0

CTRL + z会暂停这个过程,直到你决定用'fg'再次恢复它为止。你也可以简单地关上盖子(睡觉你的macbook),这将暂停你的过程(这有点危险,虽然取决于你使用的API)。 – inspectorG4dget

+0

CTRL + z和'fg'听起来像我一直在寻找 - 即使我的电脑有新的IP地址,他们也能工作吗?不确定Python是否重新启动网络连接......外部API不是问题 - 每次呼叫只需要2-3秒的时间就可以返回响应并关闭连接。 –

+0

IP问题不应该导致PYTHON的任何问题。这些API可能会带来IP更改的问题,但是您认为这不应该发生。所以看起来这是你想要的。我将添加此作为答案,因为它似乎是你正在寻找 – inspectorG4dget

回答

8

这本来是一个评论,但它似乎是OP想要的东西,所以我重新张贴它作为一个答案

我会用CTRL +ž暂停你的生活,正在运行的进程。这将为您留下一个PID,您可以稍后通过致电fgfg <job-number>恢复。
这应该不会对更改网络设置(如IP等)有任何影响,至少就python而言。我不能说API是否会令人大跌眼镜,尽管

+0

一个问题 - 是''准确或应该是工作号码? [Other](http://www.thegeekstuff.com/2010/05/unix-background-job/)[resources](http://commandlinemac.blogspot.com/2008/12/bash-job-control-fg -bg-jobs-and-ctrl-z.html)是指这种情况下的作业编号。 – James