code: def _start_subprocess(self, cmdline):
      for _ in range(3):
          try:
              env = os.environ.copy()
              inject_tracing_vars(env)
              # Set stdout=sys.stdout & stderr=sys.stderr
              # to print to console the output of sidecars.
              return subprocess.Popen(
                  cmdline,
                  stdin=subprocess.PIPE,
                  env=env,
                  stdout=sys.stdout
                  if debug.sidecar
                  else subprocess.DEVNULL,
                  stderr=sys.stderr
                  if debug.sidecar
                  else subprocess.DEVNULL,
                  bufsize=0,
              )
          except blockingError as be:
              self._logger("Sidecar popen failed: %s" % repr(be))
          except Exception as e:
              self._logger("Unknown popen error: %s" % repr(e))
              break
  
imports: from __future__ import print_function
  import subprocess
  import fcntl
  import select
  import os
  import sys
  import platform
  from fcntl import F_SETFL
  from os import O_NONBLOCK
  from .sidecar_messages import Message, MessageTypes
  from ..debug import debug
  from metaflow.tracing import inject_tracing_vars
label_desc: Use image node_id 5 for calling the SidecarSubProcess obj's underlying member method code with example usage: obj._start_subprocess(cmdline) and returns: subprocess