class_docstr: A subprocess worker via Popen.
  
  PopenWorker provides a low-level
  API to interact with a separate process via Popen.
  
  Parameters
  ----------
  initializer: callable or None
      A callable initializer, or None
  
  initargs: Tuple[object]
      A tuple of args for the initializer
  
  maximum_uses: Optional[int]
      The maximum number of times a process can be used before being recycled,
      i.e. killed and restarted. If `None`, the process will be reused until
      an operation times out.
  
  stdout: Union[None, int, IO[Any]]
      The standard output streams handler specified for the popen process.
  
  stderr: Union[None, int, IO[Any]]
      The standard error streams handler specified for the popen process.
docstr: Join the current process worker before it terminates.
  
  Parameters
  ----------
  timeout: Optional[number]
      Timeout value, block at most timeout seconds if it
      is a positive number.
docstr_tok: ["Join","the","current","process","worker","before","it","terminates",".","Parameters","--","--","--","--","--","timeout",":","Optional","[","number","]","Timeout","value",",","block","at","most","timeout","seconds","if","it","is","a","positive","number","."]
code: def join(self, timeout=None):
      """Join the current process worker before it terminates.
  
      Parameters
      ----------
      timeout: Optional[number]
          Timeout value, block at most timeout seconds if it
          is a positive number.
      """
      if self._proc:
          try:
              self._proc.wait(timeout)
          except subprocess.TimeoutExpired:
              pass
  
imports: import os
  import sys
  import struct
  import threading
  import subprocess
  import concurrent.futures
  from enum import IntEnum
  from collections import namedtuple
  import pickle
label_desc: Use image node_id 5 for calling the PopenWorker obj's underlying member method code with example usage: obj.join(timeout) without return types