python程序中斷然后接著中斷代碼繼續(xù)運(yùn)行問題
前言
python通過django,flask框架開發(fā)運(yùn)維管理的時(shí)候,碰到的一個(gè)功能可能涉及很多個(gè)模塊,里面涉及了多個(gè)表數(shù)據(jù),如果前面的運(yùn)行都很不錯(cuò),但是中間一旦報(bào)錯(cuò)了,這就很煩,程序退出了,需要重新再來一遍,數(shù)據(jù)也需要重新清洗。
如果有一個(gè)很好的選擇可以讓程序在在有問題的模塊部位中止,主進(jìn)程一直不退出繼續(xù)保持運(yùn)行狀態(tài),處理好有問題的模塊之后運(yùn)行下面沒問題的模塊即可
import time import psutil import datetime,os pause=psutil.Process(os.getpid()) from jielong import GoodMessage msg=None try: print("程序啟動(dòng)時(shí)間:",datetime.datetime.now()) g=GoodMessage('狗',10) with open('drink.txt','w+',encoding='gbk') as f: msg=g.drink(20) f.write(msg) except Exception as e: print("程序出異常了所以需要暫停當(dāng)前進(jìn)程ID是:{}".format(os.getpid())) pause.suspend() with open('drink.txt','r+') as f: msg=f.read() for i in range(5): print(f"執(zhí)行時(shí)間是{datetime.datetime.now()}") print(msg) time.sleep(2)
運(yùn)行結(jié)果
程序啟動(dòng)時(shí)間: 2022-05-26 11:08:03.661051
執(zhí)行時(shí)間是2022-05-26 11:08:03.663050
動(dòng)物都要喝水,狗每次喝10L水
執(zhí)行時(shí)間是2022-05-26 11:08:05.667317
動(dòng)物都要喝水,狗每次喝10L水
執(zhí)行時(shí)間是2022-05-26 11:08:07.671946
動(dòng)物都要喝水,狗每次喝10L水
執(zhí)行時(shí)間是2022-05-26 11:08:09.677413
動(dòng)物都要喝水,狗每次喝10L水
執(zhí)行時(shí)間是2022-05-26 11:08:11.686922
動(dòng)物都要喝水,狗每次喝10L水
jielong.py
class GoodMessage(object): def __init__(self,name,age): self.name=name self.age=age def drink(self,vol): return "動(dòng)物都要喝水,{}每次喝{}L水".format(self.name,10)
下面模擬jielong模塊出錯(cuò)的問題
import time import psutil import datetime,os pause=psutil.Process(os.getpid()) from jielong import GoodMessage msg=None try: print("程序啟動(dòng)時(shí)間:",datetime.datetime.now()) g=GoodMessage('狗',10) with open('drink.txt','w+',encoding='gbk') as f: msg=g.drink() f.write(msg) except Exception as e: print("程序出異常了所以需要暫停當(dāng)前進(jìn)程ID是:{}".format(os.getpid())) pause.suspend() with open('drink.txt','r+') as f: msg=f.read() for i in range(5): print(f"執(zhí)行時(shí)間是{datetime.datetime.now()}") print(msg) time.sleep(2)
可以看出程序已經(jīng)hang住了
此時(shí)的drink.txt文件也已經(jīng)為空了,這里可以把drink.txt當(dāng)作保存處理結(jié)果的一個(gè)文檔,因?yàn)楫惓A宋覀兪謩?dòng)處理下這個(gè)文檔,給這個(gè)里面加上如果程序沒有異常正常返回的結(jié)果,生產(chǎn)環(huán)境可能是數(shù)據(jù)庫保存這些數(shù)據(jù),然后在讀取
上面的進(jìn)程ID是9016
我們可以在cmd窗口直接連接到這個(gè)進(jìn)程,然后讓程序啟動(dòng)起來
執(zhí)行結(jié)果
程序啟動(dòng)時(shí)間: 2022-05-26 11:15:53.337709
程序出異常了所以需要暫停當(dāng)前進(jìn)程ID是:2868
執(zhí)行時(shí)間是2022-05-26 11:17:39.144744
動(dòng)物都要喝水,狗每次喝10L水
執(zhí)行時(shí)間是2022-05-26 11:17:41.154257
動(dòng)物都要喝水,狗每次喝10L水
執(zhí)行時(shí)間是2022-05-26 11:17:43.167452
動(dòng)物都要喝水,狗每次喝10L水
執(zhí)行時(shí)間是2022-05-26 11:17:45.173947
動(dòng)物都要喝水,狗每次喝10L水
執(zhí)行時(shí)間是2022-05-26 11:17:47.183822
動(dòng)物都要喝水,狗每次喝10L水Process finished with exit code 0
可以看出來中斷的程序的確可以繼續(xù)運(yùn)行下去
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
python機(jī)器學(xué)習(xí)實(shí)現(xiàn)決策樹
這篇文章主要為大家詳細(xì)介紹了python機(jī)器學(xué)習(xí)實(shí)現(xiàn)決策樹,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-11-11淺談Keras中shuffle和validation_split的順序
這篇文章主要介紹了淺談Keras中shuffle和validation_split的順序,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-06-06Python Serial串口基本操作(收發(fā)數(shù)據(jù))
這篇文章主要介紹了Python Serial串口基本操作(收發(fā)數(shù)據(jù)),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11