在使用太多内存之前停止程序

时间:2013-07-21 00:00:35

标签: python memory out-of-memory

我正在开发一个Python程序,它有时会填满数百万个项目的列表。计算机(Ubuntu)开始交换,调试器(Eclipse)无响应。

是否可以在循环中添加一行来检查正在使用多少内存,并中断执行,这样我就可以检查发生了什么?

我正在考虑类似的事情:

if usedmemory() > 1000000000:
    pass # with a breakpoint here

但我不知道used memory()可能是什么。

1 个答案:

答案 0 :(得分:2)

这高度依赖于您运行Python的计算机。以下是在Linux https://stackoverflow.com/a/278271/541208上实现此问题的方法的答案,但另一个答案提供了更加独立于平台的解决方案:https://stackoverflow.com/a/2468983/541208psutil库,您可以通过{ {1}}:

pip install psutil

所以你要查看可用内存的>>> psutil.virtual_memory() vmem(total=8374149120L, available=2081050624L, percent=75.1, used=8074080256L, free=300068864L, active=3294920704, inactive=1361616896, buffers=529895424L, cached=1251086336) >>> psutil.swap_memory() swap(total=2097147904L, used=296128512L, free=1801019392L, percent=14.1, sin=304193536, sout=677842944) ,并根据它使用的内存量来终止你的进程