code: def _launch(self, process_obj):
      tracker_fd = resource_tracker._resource_tracker.getfd()
  
      fp = BytesIO()
      set_spawning_popen(self)
      try:
          prep_data = spawn.get_preparation_data(
              process_obj._name,
              getattr(process_obj, "init_main_module", True),
          )
          reduction.dump(prep_data, fp)
          reduction.dump(process_obj, fp)
  
      finally:
          set_spawning_popen(None)
  
      try:
          parent_r, child_w = os.pipe()
          child_r, parent_w = os.pipe()
          # for fd in self._fds:
          #     _mk_inheritable(fd)
  
          cmd_python = [sys.executable]
          cmd_python += ["-m", self.__module__]
          cmd_python += ["--process-name", str(process_obj.name)]
          cmd_python += [
              "--pipe",
              str(reduction._mk_inheritable(child_r)),
          ]
          reduction._mk_inheritable(child_w)
          reduction._mk_inheritable(tracker_fd)
          self._fds += [child_r, child_w, tracker_fd]
          if sys.version_info >= (3, 8) and os.name == "posix":
              mp_tracker_fd = prep_data["mp_tracker_args"]["fd"]
              self.duplicate_for_child(mp_tracker_fd)
  
          from .fork_exec import fork_exec
  
          pid = fork_exec(cmd_python, self._fds, env=process_obj.env)
          util.debug(
              f"launched python with pid {pid} and cmd:\n{cmd_python}"
          )
          self.sentinel = parent_r
  
          method = "getbuffer"
          if not hasattr(fp, method):
              method = "getvalue"
          with os.fdopen(parent_w, "wb") as f:
              f.write(getattr(fp, method)())
          self.pid = pid
      finally:
          if parent_r is not None:
              util.Finalize(self, os.close, (parent_r,))
          for fd in (child_r, child_w):
              if fd is not None:
                  os.close(fd)
  
file_path: catboost/contrib/python/joblib/joblib/externals/loky/backend/popen_loky_posix.py
imports: import os
  import sys
  import signal
  import pickle
  from io import BytesIO
  from multiprocessing import util, process
  from multiprocessing.connection import wait
  from multiprocessing.context import set_spawning_popen
  from .None import reduction, resource_tracker, spawn
label_desc: Use image node_id 6 for calling the Popen obj's underlying member method code with example usage: obj._launch(process_obj) without return types