code: def run(self):
      try:
          for subject in self.__subjects:
              subject.start()
  
          self.__startEvent.emit()
  
          while not self.__stop:
              eof, eventsDispatched = self.__dispatch()
              if eof:
                  self.__stop = True
              elif not eventsDispatched:
                  self.__idleEvent.emit()
      finally:
          # There are no more events.
          self.__currDateTime = None
  
          for subject in self.__subjects:
              subject.stop()
          for subject in self.__subjects:
              subject.join()
  
file_path: pyalgotrade/pyalgotrade/dispatcher.py
imports: from pyalgotrade import utils
  from pyalgotrade import observer
  from pyalgotrade import dispatchprio
label_desc: Use image node_id 10 for calling the Dispatcher obj's underlying member method code with example usage: obj.run() without return types