def CalcMemoryUsage(what, iterations = 1): if session and session.role & (service.ROLE_PROGRAMMER | service.ROLE_SERVICE) == 0: raise RuntimeError('Requires role programmer') iterations = max(1, iterations) iterations = min(iterations, 10) enabled = gc.isenabled() if enabled: gc.disable() oldWhitelist = blue.marshal.globalsWhitelist.copy() blue.marshal.globalsWhitelist.clear() oldCollectWhitelist = blue.marshal.collectWhitelist blue.marshal.collectWhitelist = True try: zippedSum = pickleSum = changeSum = 0 for i in xrange(iterations): pickle = blue.marshal.Save(what) zipped = zlib.compress(pickle) before = sys.getpymalloced() unpickled = blue.marshal.Load(pickle) after = sys.getpymalloced() pickleSum += len(pickle) zippedSum += len(zipped) changeSum += after - before denominator = float(iterations) return (pickleSum / denominator, zippedSum / denominator, changeSum / denominator) finally: if enabled: gc.enable() blue.marshal.globalsWhitelist.clear() blue.marshal.globalsWhitelist.update(oldWhitelist) blue.marshal.collectWhitelist = oldCollectWhitelist
def DumpMemoryStatus(out): m = blue.win32.GlobalMemoryStatus() print >> out, 'GlobalMemoryStatus:' for k, v in m.items(): print >> out, '%s : %r' % (k, v) print >> out, 'ProcessMemoryInfo:' m = blue.win32.GetProcessMemoryInfo() for k, v in m.items(): print >> out, '%s : %r' % (k, v) print >> out, 'Python memory usage: %r' % sys.getpymalloced() try: print >> out, 'blue WriteStreams: %s, mem use: %s' % (blue.marshal.GetNWriteStreams(), blue.marshal.GetWriteStreamMem()) except: pass print >> out, 'end of memory status' out.flush()
def DumpMemoryStatus(out): m = blue.win32.GlobalMemoryStatus() print >> out, 'GlobalMemoryStatus:' for k, v in m.items(): print >> out, '%s : %r' % (k, v) print >> out, 'ProcessMemoryInfo:' m = blue.win32.GetProcessMemoryInfo() for k, v in m.items(): print >> out, '%s : %r' % (k, v) print >> out, 'Python memory usage: %r' % sys.getpymalloced() try: print >> out, 'blue WriteStreams: %s, mem use: %s' % ( blue.marshal.GetNWriteStreams(), blue.marshal.GetWriteStreamMem()) except: pass print >> out, 'end of memory status' out.flush()