docstr: Show progress
docstr_tok: ["Show","progress"]
code: def log_progress(self):
      """
      Show progress
      """
      now = time.time()
      spent = now - self._start_time
  
      if not math.isclose(self._iter_time, 0.0):
          estimate = self._iter_time / (1 - self._beta_pow)
      else:
          estimate = sum(
              [
                  s.get_estimated_time()
                  for s in self.__looping_sections.values()
                  if not s.is_child
              ]
          )
  
      total_time = estimate * len(self.iterator) + self._init_time
      total_time = max(total_time, spent)
      remain = total_time - spent
  
      remain /= 60
      spent /= 60
      estimate *= 1000
  
      spent_h = int(spent // 60)
      spent_m = int(spent % 60)
      remain_h = int(remain // 60)
      remain_m = int(remain % 60)
  
      to_print = [("  ", None)]
      if self._is_print_iteration_time:
          to_print.append((f"{estimate:,.0f}ms", logger.Text.meta))
      to_print.append(
          (
              f"{spent_h:3d}:{spent_m:02d}m/{remain_h:3d}:{remain_m:02d}m  ",
              logger.Text.meta2,
          )
      )
  
      return to_print
  
file_path: labml/client/labml/internal/monitor/loop.py
imports: import math
  import time
  from typing import Optional, Dict, TYPE_CHECKING, List, Collection
  from labml import logger
  from ..monitor.sections import LoopingSection
  from ..tracker import tracker_singleton
label_desc: Use image node_id 4 for calling the Loop obj's underlying member method code with example usage: obj.log_progress() and returns: to_print