code: def track_mmread(self, size, implementation, matrix_type):
      size = self.size[size]
  
      if matrix_type == "coo":
          a = generate_coo(size)
      elif matrix_type == "dense":
          a = generate_dense(size)
      elif matrix_type == "csr":
          # cannot read directly into csr, only coo
          return 0
      else:
          raise NotImplementedError
  
      mmwrite(self.filename, a, symmetry="general")
      del a
  
      code = f"""
          from {implementation} import mmread
          mmread('{self.filename}')
          """
      time, peak_mem = run_monitored(code)
      return peak_mem / size
  
imports: from .common import set_mem_rlimit, run_monitored, get_mem_info
  from io import BytesIO, StringIO
  import os
  import tempfile
  import numpy
  from .common import Benchmark, safe_import
label_desc: Use image node_id 5 for calling the MemUsage obj's underlying member method code with example usage: obj.track_mmread(size, implementation, matrix_type) and returns: unknown, int