Source code for galaxy.util.memdump

# Attempt to load guppy module, and only define Memdump class
# if available

try:

    import pkg_resources
    pkg_resources.require( "guppy" )

except:

    import sys
    print >> sys.stderr, "No guppy module, Memdump not available"
    Memdump = None

else:

    import os, sys, signal, time, guppy

    class Memdump( object ):
[docs] def __init__( self, signum=signal.SIGUSR1, fname="memdump.log" ): self.fname = fname signal.signal( signum, self.dump ) self.heapy = guppy.hpy() self.heap = None def dump( self, signum, stack ):
[docs] file = open( self.fname, "a" ) print >> file, "Memdump for pid %d at %s" % ( os.getpid(), time.asctime() ) print >> file try: self.heap = self.heapy.heap() print >> file, "heap():" print >> file, self.heap print >> file, "\nbyrcs:" print >> file, self.heap.byrcs print >> file, "\nbyrcs[0].byid:" print >> file, self.heap.byrcs[0].byid print >> file, "\nget_rp():" print >> file, self.heap.get_rp() self.heapy.setref() except AssertionError: pass print >> file, "\nEnd dump\n" file.close() def setref( self ):
[docs] self.heapy.setref() def get( self, update=False ):
[docs] if update: self.heap = self.heapy.heap() return self.heap