python需要联网运行吗_如何暂停在终端中运行的python脚本
我有一個(gè)網(wǎng)絡(luò)爬行
python腳本在終端上運(yùn)行了幾個(gè)小時(shí),它不斷填充我的數(shù)據(jù)庫.它有幾個(gè)嵌套的for循環(huán).出于某些原因,我需要重新啟動(dòng)計(jì)算機(jī)并從我離開的地方繼續(xù)我的腳本.是否可以保留指針狀態(tài)并恢復(fù)以前在終端中運(yùn)行的腳本?
我正在尋找一個(gè)可以在不改變python腳本的情況下工作的解決方案.修改代碼的優(yōu)先級(jí)較低,因?yàn)檫@意味著重新啟動(dòng)程序并重新投入時(shí)間.
更新:
感謝VM的建議.我會(huì)接受的.為了完成,應(yīng)該對(duì)腳本進(jìn)行哪些通用修改以使其暫停和恢復(fù)?
UPDATE2:
在VM上移植工作正常.我還修改了腳本,使其能夠?qū)W(wǎng)絡(luò)故障進(jìn)行故障保護(hù).代碼如下.
最佳答案 您可以嘗試掛起計(jì)算機(jī)或在虛擬機(jī)中運(yùn)行,然后可以暫停.但是,由于您的腳本正在使用網(wǎng)絡(luò)連接,因此一旦啟動(dòng)系統(tǒng),您的腳本將無法從您離開的位置開始工作.暫停計(jì)算機(jī)并將其恢復(fù)或保存虛擬M / C并恢復(fù)它意味著您需要重新建立網(wǎng)絡(luò)連接.對(duì)于系統(tǒng)外部的任何元素都是如此,網(wǎng)絡(luò)就是其中之一.并且很有可能如果您使用動(dòng)態(tài)網(wǎng)絡(luò),下次啟動(dòng)時(shí)您將獲得一個(gè)新的IP,并且您之前工作的網(wǎng)絡(luò)狀態(tài)將無效.
如果您打算修改腳本,那么您需要記住的一些事情.
>添加序列化和反序列化功能. Python有pickle和更快的cPickle方法.
>添加重啟點(diǎn).執(zhí)行此操作的最佳方法是定期保存狀態(tài),并在重新啟動(dòng)腳本時(shí),在建立所有瞬態(tài)元素(如網(wǎng)絡(luò))后從上次保存的狀態(tài)重新啟動(dòng).
這不是一件容易的事,所以考慮投入大量的時(shí)間:-)
注意***
再想一想.更改腳本有一種替代方法.您可以嘗試使用Amazon EC2等云虛擬化解決方案.
總結(jié)
以上是生活随笔為你收集整理的python需要联网运行吗_如何暂停在终端中运行的python脚本的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c++ map iterator 获取k
- 下一篇: python的opencv模块_Open