class_docstr: Runs Airflow task instances via CLI.
  
  Invoke the `airflow tasks run` command with raw mode enabled in a subprocess.
  
  :param job_runner: The LocalTaskJobRunner associated with the task runner
docstr: Get the process pid.
docstr_tok: ["Get","the","process","pid","."]
code: def get_process_pid(self) -> int:
      """Get the process pid."""
      if (
          hasattr(self, "process")
          and self.process is not None
          and hasattr(self.process, "pid")
      ):
          # this is a backwards compatibility for custom task runners that were used before
          # the process.pid attribute was accessed by local_task_job directly but since process
          # was either subprocess.Popen or psutil.Process it was not possible to have it really
          # common in the base task runner - instead we changed it to use get_process_pid method and leave
          # it to the task_runner to implement it
          return self.process.pid
      raise NotImplementedError()
  
imports: from __future__ import annotations
  import os
  import subprocess
  import threading
  from airflow.utils.dag_parsing_context import _airflow_parsing_context_manager
  from airflow.utils.platform import IS_WINDOWS
  from typing import TYPE_CHECKING
  from airflow.configuration import conf
  from airflow.exceptions import AirflowConfigException
  from airflow.utils.configuration import tmp_configuration_copy
  from airflow.utils.log.logging_mixin import LoggingMixin
  from airflow.utils.net import get_hostname
  from airflow.utils.platform import getuser
label_desc: Use image node_id 8 for calling the BaseTaskRunner obj's underlying member method code with example usage: obj.get_process_pid() and returns: self