code: def _send(self, evaluator_id, function, args=(), kwargs={}):
      if self.is_crashed:
          raise InternalError(
              "The subprocess %s has crashed." % self._executable
          )
  
      if not is_py3:
          # Python 2 compatibility
          kwargs = {
              force_unicode(key): value for key, value in kwargs.items()
          }
  
      data = evaluator_id, function, args, kwargs
      try:
          pickle_dump(data, self._process.stdin, self._pickle_protocol)
      except (socket.error, IOError) as e:
          # Once Python2 will be removed we can just use `BrokenPipeError`.
          # Also, somehow in windows it returns EINVAL instead of EPIPE if
          # the subprocess dies.
          if e.errno not in (errno.EPIPE, errno.EINVAL):
              # Not a broken pipe
              raise
          self._kill()
          raise InternalError(
              "The subprocess %s was killed. Maybe out of memory?"
              % self._executable
          )
  
      try:
          is_exception, traceback, result = pickle_load(
              self._process.stdout
          )
      except EOFError as eof_error:
          try:
              stderr = self._process.stderr.read().decode(
                  "utf-8", "replace"
              )
          except Exception as exc:
              stderr = "<empty/not available (%r)>" % exc
          self._kill()
          _add_stderr_to_debug(self._stderr_queue)
          raise InternalError(
              "The subprocess %s has crashed (%r, stderr=%s)."
              % (
                  self._executable,
                  eof_error,
                  stderr,
              )
          )
  
      _add_stderr_to_debug(self._stderr_queue)
  
      if is_exception:
          # Replace the attribute error message with a the traceback. It's
          # way more informative.
          result.args = (traceback,)
          raise result
      return result
  
imports: import os
  import sys
  import subprocess
  import socket
  import errno
  import weakref
  import traceback
  from functools import partial
  from threading import Thread
  from jedi._compatibility import queue, is_py3, force_unicode, pickle_dump, pickle_load, GeneralizedPopen, print_to_stderr
  from jedi import debug
  from jedi.cache import memoize_method
  from jedi.evaluate.compiled.subprocess import functions
  from jedi.evaluate.compiled.access import DirectObjectAccess, AccessPath, SignatureParam
  from jedi.api.exceptions import InternalError
label_desc: Use image node_id 8 for calling the CompiledSubprocess obj's underlying member method code with example usage: obj._send(evaluator_id, function, args, kwargs) and returns: result