class_docstr: Tracks pipeline progress and estimates time to completion 
docstr: Update the historical execution times, which are used as the
  bases for projecting the time that remains.  Also update the
  labels that show the current module and image set.  This
  method is called by the pipelinecontroller at the beginning of
  every module execution to update the progress bar.
docstr_tok: ["Update","the","historical","execution","times",",","which","are","used","as","the","bases","for","projecting","the","time","that","remains",".","Also","update","the","labels","that","show","the","current","module","and","image","set",".","This","method","is","called","by","the","pipelinecontroller","at","the","beginning","of","every","module","execution","to","update","the","progress","bar","."]
code: def on_start_module(
      self, module, num_modules, image_set_index, num_image_sets
  ):
      """
      Update the historical execution times, which are used as the
      bases for projecting the time that remains.  Also update the
      labels that show the current module and image set.  This
      method is called by the pipelinecontroller at the beginning of
      every module execution to update the progress bar.
      """
      self.current_module = module
      self.current_module_name = module.module_name
      self.num_modules = num_modules
      self.image_set_index = image_set_index
      self.num_image_sets = num_image_sets
  
      if self.end_times is None:
          # One extra element at the beginning for the start time
          self.end_times = numpy.zeros(1 + num_modules * num_image_sets)
      module_index = module.module_num - 1  # make it zero-based
      index = image_set_index * num_modules + (module_index - 1)
      self.end_times[1 + index] = self.elapsed_time()
  
      self.update()
  
file_path: CellProfiler/src/frontend/cellprofiler/gui/preferences_view/_progress_watcher.py
imports: import time
  import numpy
  import wx
label_desc: Use image node_id 6 for calling the ProgressWatcher obj's underlying member method code with example usage: obj.on_start_module(module, num_modules, image_set_index, num_image_sets) without return types