code: def _track_peak_memory(self, interval: float):
      child_connection, parent_connection = Pipe()
      # instantiate process
      mem_process: Process = PeakMemoryMeasureProcess(
          self.device_index, child_connection, interval
      )
      mem_process.start()
      # wait until we get memory
      parent_connection.recv()
      yield
      # start parent connection
      parent_connection.send(0)
      # receive peak memory
      self.peak_memory = parent_connection.recv()
  
file_path: optimum/tests/benchmark/memory_tracker.py
imports: import os
  import subprocess
  from contextlib import contextmanager
  from multiprocessing import Pipe, Process
  from multiprocessing.connection import Connection
label_desc: Use image node_id 3 for calling the MemoryTracker obj's underlying member method code with example usage: obj._track_peak_memory(interval) without return types