【发布时间】:2017-06-22 19:00:45
【问题描述】:
我有一段 python 代码会在一段时间后生成MemoryError。我知道它会消耗大量内存。
所以,我决定将代码放在try/except 块中,这样骨架就如下所示:
while True:
while True:
try:
#---- do some stuff
except MemoryError as err:
print(err)
break
所以,我的想法是,如果出现MemoryError,则跳出第一个while-loop,并且由于我有一个外部while-loop,它将再次启动程序。
它似乎暂时有效,但我不确定。过了一会儿,它又停止了,我需要再次重新启动程序。
有人知道更好的解决方案,以便程序可以在MemoryError 之后再次运行吗?
【问题讨论】:
-
为了清楚起见,你问当
MemoryError发生时该怎么办? -
是的。或者更好:MemoryError 发生后如何继续try-block?
-
你使用什么类型的数据结构?只是标准列表和字典,或者您是否使用了一些第三方软件包,例如
numpy或pandas。尝试创建和使用非常大的numpy数组时出现内存错误,因此会定期出现。 -
在另一篇文章中你说你正在学习 Python。初学者不应该出现记忆错误,除非他们做错了什么。不要试图
except出错误。弄清楚是什么在不受控制地使用内存。