import os import numpy as np import hashlib PROC_STATUS = '/proc/%d/status' % os.getpid() SCALE = {'kB': 1024.0, 'mB': 1024.0 * 1024.0, 'KB': 1024.0, 'MB': 1024.0 * 1024.0} def _VmB(*VmKeys): # get pseudo file /proc//status t = open(PROC_STATUS) v = t.read() t.close() results = [] for VmKey in VmKeys: # get VmKey line e.g. 'VmRSS: 9999 kB\n ...' i = v.index(VmKey) vv = v[i:].split(None, 3) # whitespace if len(vv) < 3: return 0.0 # invalid format? # convert Vm value to bytes results.append(float(vv[1]) * SCALE[vv[2]]) return results def get_memory_usage(): return _VmB('VmSize:', 'VmRSS:', 'VmStk:') def dump_test(data): hashlib.md5("%s" % data) print str(get_memory_usage()) if __name__ == '__main__': data = np.random.randn(3000).tolist() for i in xrange(500): dump_test(data)