code: def track_cpu(self):
      res = psutil.cpu_times()
      self.data.update(
          {
              "cpu.idle": res.idle,
              "cpu.system": res.system,
              "cpu.user": res.user,
          }
      )
      try:
          res = psutil.cpu_freq()
          if res is not None:
              self.data.update(
                  {
                      "cpu.freq": res.current,
                      "cpu.freq.min": res.min,
                      "cpu.freq.max": res.max,
                  }
              )
      except Exception as e:
          pass
  
      res = psutil.cpu_percent(percpu=True)
      self.data.update({f"cpu.perc.{i}": p for i, p in enumerate(res)})
  
imports: import time
  from pathlib import Path
  import psutil
  from labml import logger
  from labml.internal.computer.monitor.process import ProcessMonitor
  from labml.logger import Text
  from labml.utils.notice import labml_notice
label_desc: Use image node_id 9 for calling the Scanner obj's underlying member method code with example usage: obj.track_cpu() without return types