from threading import Thread import os def getMemory(): # returns memory utilization in MB # works on Linux only try: f = open("/proc/%s/status" % (os.getpid(),), "r") except: # non-Linux return None, None vmsize = None vmrss = None for l in f.readlines(): l = l.strip() if l.startswith("VmSize:"): vmsize = int(l.split()[1]) elif l.startswith("VmRSS:"): vmrss = int(l.split()[1]) return float(vmsize)/1024.0, float(vmrss)/1024.0 class T(Thread): def run(self): return vm0, rss0 = getMemory() for i in range(1000000): t = T() t.start() if i and i % 10000 == 0: vm1, rss1 = getMemory() delta = rss1-rss0 print(vm1, rss1, delta/10000.0*1024, "KB/thread") rss0 = rss1