我正在开发一个Python程序,它有时会填满数百万个项目的列表。计算机(Ubuntu)开始交换,调试器(Eclipse)无响应。
是否可以在循环中添加一行来检查正在使用多少内存,并中断执行,这样我就可以检查发生了什么?
我正在考虑类似的事情:
if usedmemory() > 1000000000:
pass # with a breakpoint here
但我不知道used memory()
可能是什么。
答案 0 :(得分:2)
这高度依赖于您运行Python的计算机。以下是在Linux https://stackoverflow.com/a/278271/541208上实现此问题的方法的答案,但另一个答案提供了更加独立于平台的解决方案:https://stackoverflow.com/a/2468983/541208:psutil
库,您可以通过{ {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)
,并根据它使用的内存量来终止你的进程