class_docstr: subclass LocalProcessLauncher, to prevent extra sockets and threads being created on Windows
code: def start(self):
      if self.state == "before":
          # Store stdout & stderr to show with failing tests.
          # This is defined in IPython.testing.iptest
          self.process = Popen(
              self.args, env=os.environ, cwd=self.work_dir
          )
          self.notify_start(self.process.pid)
          self.poll = self.process.poll
      else:
          s = (
              "The process was already started and has state: %r"
              % self.state
          )
          raise ProcessStateError(s)
  
file_path: ipyparallel/ipyparallel/tests/__init__.py
imports: import asyncio
  import os
  import time
  from subprocess import Popen
  from IPython.paths import get_ipython_dir
  from ipyparallel import Client, error
  from ipyparallel.cluster.launcher import SIGKILL, LocalProcessLauncher, ProcessStateError, ipcontroller_cmd_argv, ipengine_cmd_argv
label_desc: Use image node_id 1 for calling the TestProcessLauncher obj's underlying member method code with example usage: obj.start() without return types