    def run_as_process(self, params:Parameters, direct_params:Parameters, task_run:TaskRun, daemon=None, log_queue: multiprocessing.Queue=None):
        """Create a new process and run the task on that."""

        session = self.session

        params = params.pre_materialize(task=self, session=session)
        direct_params = direct_params.pre_materialize(task=self, session=session)

        # Daemon resolution: task.daemon >> scheduler.tasks_as_daemon
        log_queue = session.scheduler._log_queue if log_queue is None else log_queue

        daemon = self.daemon if self.daemon is not None else session.config.tasks_as_daemon
        process = multiprocessing.Process(
            target=self._run_as_process,
            kwargs=dict(
                params=params, direct_params=direct_params,
                task_run=task_run,
                queue=log_queue,
                config=session.config,
                exec_hooks=self._get_hooks("task_execute")
            ),
            daemon=daemon
        )
        task_run.task = process

        self._run_stack.append(task_run)
        self._mark_running = True # needed in pickling

        process.start()
        self._mark_running = False

        self._lock_to_run_log(log_queue)
        return log_queue
Create a new process and run the task on that.
rocketry/core/task.py