code: def run(self):
          
          self.run_plugins()
          while True:
              # Reload plugins and config if either the config file or plugin
              # directory are modified.
              if self._config_mod_time != os.path.getmtime(self._config_file_path) or \
                      self._plugin_mod_time != os.path.getmtime(self._plugin_path):
                  self.thread_manager.kill_all_threads()
                  self.output_dict.clear()
                  self.reload()
                  self.run_plugins()
              self.output_to_bar(json.dumps(self._remove_empty_output()))
              time.sleep(self.config.general['interval'])
docs: Monitors if the config file or plugins are updated. Also outputs the
          JSON data generated by the plugins, without needing to poll the threads.