def METHOD_NAME(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)