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