code: def _memory_profile(with_gc=False):
      
      import utool as ut
      if with_gc:
          garbage_collect()
      import guppy
      hp = guppy.hpy()
      print('[hpy] Waiting for heap output...')
      heap_output = hp.heap()
      print(heap_output)
      print('[hpy] total heap size: ' + ut.byte_str2(heap_output.size))
      ut.util_resources.memstats()
docs: Helper for memory debugging. Mostly just a namespace where I experiment with
      guppy and heapy.
  
      References:
          http://stackoverflow.com/questions/2629680/deciding-between-subprocess-multiprocessing-and-thread-in-python
  
      Reset Numpy Memory::
          %reset out
          %reset array