I am using the following code to get the max memory usage of the program.
import os, subprocess , psutil
def mem(cmd):
try:
with
The problem here is that psutils takes a quick snapshot from the /proc filesystem, as you can see in the source.
When you run your hello world example, in some cases it finishes before python gets a chance to read the values from /proc.
Once the process is finished, it effectively no longer consumes any ram. You can confirm this with an strace.
open("/proc/13420/statm", O_RDONLY) = 3
read(3, "0 0 0 0 0 0 0\n", 1024) = 14
If you modify your example to use something like sleep, you'll notice that psutils consistently gives memory usage back.
#include
#include
int main()
{
std::cout << "Hello World.. sleeping!";
sleep(3);
}
Output of your python script...
a.out
meminfo(rss=286720, vms=12931072)
One simple way to accomplish what you are trying to do, is by using the /usr/bin/time command, which on most platforms will give you the average total memory usage of the process you launch OR use valgrind as J.F Sebastian suggests... whom posted as I was researching and testing my answer ;)
Hello World.. sleeping!0.00user 0.00system 0:03.00elapsed 0%CPU
(0avgtext+0avgdata 1144maxresident)k
0inputs+0outputs (0major+348minor)pagefaults 0swaps