docstr: Start a new thread to process the ScriptEventQueue.
  
  This must be called only once.
docstr_tok: ["Start","a","new","thread","to","process","the","ScriptEventQueue",".","This","must","be","called","only","once","."]
code: def start(self) -> None:
      """Start a new thread to process the ScriptEventQueue.
  
      This must be called only once.
  
      """
      if self._script_thread is not None:
          raise Exception("ScriptRunner was already started")
  
      self._script_thread = threading.Thread(
          target=self._run_script_thread,
          name="ScriptRunner.scriptThread",
      )
      self._script_thread.start()
  
imports: import gc
  import sys
  import threading
  import types
  from contextlib import contextmanager
  from enum import Enum
  from timeit import default_timer
  from typing import Callable, Dict, Optional
  from blinker import Signal
  from streamlit import config, runtime, source_util, util
  from streamlit.error_util import handle_uncaught_app_exception
  from streamlit.logger import get_logger
  from streamlit.proto.ClientState_pb2 import ClientState
  from streamlit.proto.ForwardMsg_pb2 import ForwardMsg
  from streamlit.runtime.scriptrunner.script_cache import ScriptCache
  from streamlit.runtime.scriptrunner.script_requests import RerunData, ScriptRequests, ScriptRequestType
  from streamlit.runtime.scriptrunner.script_run_context import ScriptRunContext, add_script_run_ctx, get_script_run_ctx
  from streamlit.runtime.state import SCRIPT_RUN_WITHOUT_ERRORS_KEY, SafeSessionState, SessionState
  from streamlit.runtime.uploaded_file_manager import UploadedFileManager
  from streamlit.vendor.ipython.modified_sys_path import modified_sys_path
label_desc: Use image node_id 5 for calling the ScriptRunner obj's underlying member method code with example usage: obj.start() without return types