Я использую следующий код, чтобы получить максимальное использование памяти в памяти.
import os, subprocess , psutil
def mem(cmd):
try:
with open('in.txt','r') as infile, open('out.txt', 'w') as outfile:
p=psutil.Popen("./"+cmd,shell=False,stdin=infile,stdout = outfile)
print p.memory_info()
except Exception:
print "Error"
cmd=raw_input()
mem(cmd)
Проблема заключается в том, что иногда для начальных прогонов программы используется использование памяти (0,0), но впоследствии она отображает правильный вывод. Я не знаю, почему это происходит. Для некоторых программ, таких как глобальная программа hello в С++, результат равен pmem(rss=4096, vms=315392)
, который составляет около 0,3 М (я думаю, что вывод находится в байтах), но запуск глобальной программы hello в ideone.com дает результат как ~ 3M. Почему существует эта диспропорция?
cmd - это имя исполняемого файла.
Вывод команды print subprocess.check_output(['ps', 'v', '-p', str(p.pid)])
PID TTY STAT TIME MAJFL TRS DRS RSS %MEM COMMAND
16150 pts/16 Z+ 0:00 0 0 0 0 0.0 [a.out] <defunct>
Одна из моих программ на С++:
`int a[1000000];
int main()
{
return 0;
}`
возвращает pmem (rss = 4096, vms = 4313088) иногда и pmem (rss = 0, vms = 0) иногда