So ermitteln Sie die maximale Speichernutzung eines Programms mithilfe von psutil in Python

Ich benutze den folgenden Code, um die maximale Speichernutzung des Programms zu erhalten.

    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)

Das Problem besteht manchmal darin, dass bei den ersten Programmläufen die Speicherauslastung (0,0) ist, anschließend jedoch die richtige Ausgabe angezeigt wird. Ich weiß nicht, warum das passiert. Für einige Programme wie das Hallo-Welt-Programm in c ++ ist die Ausgabepmem(rss=4096, vms=315392) Das sind ungefähr 0,3 MB (ich denke, die Ausgabe erfolgt in Byte), aber wenn Sie das Programm "Hallo Welt" auf ideone.com ausführen, erhalten Sie eine Ausgabe von ~ 3 MB. Warum gibt es diese Unzufriedenheit?

cmd ist der Name der ausführbaren Datei.

Die Ausgabe des Befehlsprint 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>

Eines meiner C ++ - Beispielprogramme:

`int a[1000000];
int main()
{
    return 0;
}`

Gibt manchmal pmem (rss = 4096, vms = 4313088) und manchmal pmem (rss = 0, vms = 0) zurück

Antworten auf die Frage(2)

Ihre Antwort auf die Frage