code: def _run(self):
          
          try:
              start_time = time.time()
  
              # Collect Data
              self.collect()
  
              end_time = time.time()
              collector_time = int((end_time - start_time) * 1000)
  
              self.log.debug('Collection took %s ms', collector_time)
  
              if 'measure_collector_time' in self.config:
                  if self.config['measure_collector_time']:
                      metric_name = 'collector_time_ms'
                      metric_value = collector_time
                      self.publish(metric_name, metric_value)
          finally:
              # After collector run, invoke a flush
              # method on each handler.
              for handler in self.handlers:
                  handler._flush()
docs: Run the collector unless it's already running