2012-12-23 2 views
0

Мне интересно, как во всех случаях получить использование памяти резидентной памяти в MB. Иногда я получаю его в МБ, но иногда это происходит в ГБ.Выход использования памяти процесса

Я искал решение, но большинство из них не работало. Что-то, что можно обработать в top -b -n 1 | grep %i | awk '{print$9}', было бы замечательно.

+0

Пожалуйста, ваш код. –

+0

Ну нет кода в это время для того, что я хочу сделать, но я использую top -b -n 1 | grep% i | awk '{print $ 9}', чтобы найти процент процессора в процессе. – icebox3d

+0

Тогда почему это помечено как вопрос python? –

ответ

2

Если вы хотите избежать использования подпроцесса, вы можете посмотреть библиотеку psutil.

Вот пример, если вы просто ищете информацию о едином процессе:

import psutil 

pid = 14551 

def rss_MB(pid): 
    proc = psutil.Process(pid) 
    mem_bytes = proc.get_memory_info().rss 
    return(float(mem_bytes)/1048576) 

mem_MB = rss_MB(pid) 
print "pid: %d has an rss of %f MB" % (pid, mem_MB) 
0

Пример:

import subprocess 

lines = subprocess.check_output(['ps', '-xacuww']).splitlines() 
del lines[0] # skip the header 
for p in lines: 
    items = p.split() 
    print "Process:", items[-1], " memory:", items[5], "kB" 

Это было написано на FreeBSD, где RSS размер сообщается в кбайт. Опции для ps на Linux могут отличаться, проверьте страницу руководства.

Смежные вопросы