一种方法是使用resource 库。这是单个进程的内存和其他资源信息:
来源
# https://docs.python.org/2/library/resource.html#resource.getrusage
import resource, time
pagesize = resource.getpagesize()
info = resource.getrusage(resource.RUSAGE_SELF)
print 'EMPTY:', info
print info.ru_maxrss * pagesize, 'bytes'
beer = open('/vmlinuz').read(), 'bytes'
info=resource.getrusage(resource.RUSAGE_SELF)
print
print 'FULL:', info
print info.ru_maxrss * pagesize, 'bytes'
输出
EMPTY: resource.struct_rusage(ru_utime=0.011235, ru_stime=0.0037449999999999996, ru_maxrss=4872, ru_ixrss=0, ru_idrss=0, ru_isrss=0, ru_minflt=1448, ru_majflt=0, ru_nswap=0, ru_inblock=0, ru_oublock=0, ru_msgsnd=0, ru_msgrcv=0, ru_nsignals=0, ru_nvcsw=0, ru_nivcsw=4)
19955712 bytes
FULL: resource.struct_rusage(ru_utime=0.013916, ru_stime=0.004638, ru_maxrss=10380, ru_ixrss=0, ru_idrss=0, ru_isrss=0, ru_minflt=2824, ru_majflt=0, ru_nswap=0, ru_inblock=0, ru_oublock=0, ru_msgsnd=0, ru_msgrcv=0, ru_nsignals=0, ru_nvcsw=0, ru_nivcsw=4)
42516480 bytes
ru_idrss 号码在页面中是 maximum resident set size。将其乘以页面大小(以字节为单位)得到父进程使用的最大内存量。
重复上述,指定RUSAGE_CHILDREN,会给孩子的内存使用量。
请注意,上面的内容非常粗略,但对正在发生的事情有所了解。