概述
前言:
python通过django,flask框架开发运维管理的时候,碰到的一个功能可能涉及很多个模块,里面涉及了多个表数据,如果前面的运行都很不错,但是中间一旦报错了,这就很烦,程序退出了,需要重新再来一遍,数据也需要重新清洗。
如果有一个很好的选择可以让程序在在有问题的模块部位中止,主进程一直不退出继续保持运行状态,处理好有问题的模块之后运行下面没问题的模块即可
import time
import psutil
import datetime,os
pause=psutil.Process(os.getpid())
from jielong import GoodMessage
msg=None
try:
print("程序启动时间:",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("程序出异常了所以需要暂停当前进程ID是:{}".format(os.getpid()))
pause.suspend()
with open('drink.txt','r+') as f:
msg=f.read()
for i in range(5):
print(f"执行时间是{datetime.datetime.now()}")
print(msg)
time.sleep(2)
运行结果
程序启动时间: 2022-05-26 11:08:03.661051
执行时间是2022-05-26 11:08:03.663050
动物都要喝水,狗每次喝10L水
执行时间是2022-05-26 11:08:05.667317
动物都要喝水,狗每次喝10L水
执行时间是2022-05-26 11:08:07.671946
动物都要喝水,狗每次喝10L水
执行时间是2022-05-26 11:08:09.677413
动物都要喝水,狗每次喝10L水
执行时间是2022-05-26 11:08:11.686922
动物都要喝水,狗每次喝10L水
jielong.py
class GoodMessage(object):
def __init__(self,name,age):
self.name=name
self.age=age
def drink(self,vol):
return "动物都要喝水,{}每次喝{}L水".format(self.name,10)
下面模拟jielong模块出错的问题
import time
import psutil
import datetime,os
pause=psutil.Process(os.getpid())
from jielong import GoodMessage
msg=None
try:
print("程序启动时间:",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("程序出异常了所以需要暂停当前进程ID是:{}".format(os.getpid()))
pause.suspend()
with open('drink.txt','r+') as f:
msg=f.read()
for i in range(5):
print(f"执行时间是{datetime.datetime.now()}")
print(msg)
time.sleep(2)
可以看出程序已经hang住了
此时的drink.txt文件也已经为空了,这里可以把drink.txt当作保存处理结果的一个文档,因为异常了我们手动处理下这个文档,给这个里面加上如果程序没有异常正常返回的结果,生产环境可能是数据库保存这些数据,然后在读取
上面的进程ID是9016
我们可以在cmd窗口直接连接到这个进程,然后让程序启动起来
执行结果
程序启动时间: 2022-05-26 11:15:53.337709
程序出异常了所以需要暂停当前进程ID是:2868
执行时间是2022-05-26 11:17:39.144744
动物都要喝水,狗每次喝10L水
执行时间是2022-05-26 11:17:41.154257
动物都要喝水,狗每次喝10L水
执行时间是2022-05-26 11:17:43.167452
动物都要喝水,狗每次喝10L水
执行时间是2022-05-26 11:17:45.173947
动物都要喝水,狗每次喝10L水
执行时间是2022-05-26 11:17:47.183822
动物都要喝水,狗每次喝10L水
Process finished with exit code 0
可以看出来中断的程序的确可以继续运行下去
最后
以上就是美丽雪碧为你收集整理的python程序中断然后接着中断代码继续运行的全部内容,希望文章能够帮你解决python程序中断然后接着中断代码继续运行所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复