2013-07-21 33 views
2

我正在研究一個Python程序,它有時會用數百萬項填充列表。計算機(Ubuntu)開始交換,調試器(Eclipse)變得無響應。在使用太多內存之前停止一個程序

是否可以在循環中添加一行來檢查正在使用多少內存並中斷執行,以便我可以檢查發生了什麼?

我想是這樣的:

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

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

+0

檢出http://stackoverflow.com/questions/938733/total-memory-used-by-python-process –

+1

http://docs.python.org/release/2.4.1/lib/node436.html – selbie

回答

2

這很大程度上取決於您正在運行Python的機器。這裏有一個SO回答的方式來做到這一點在Linux上https://stackoverflow.com/a/278271/541208,但對方的回答也提供了更多的平臺獨立的解決方案: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的可用內存,並根據它使用多少內存來終止進程

相關問題