class_docstr: Manages the communication between this process and the worker processes.
  
  The manager is run in a local thread.
  
  Args:
      executor: A reference to the ProcessPoolExecutor that owns
          this thread. A weakref will be own by the manager as well as
          references to internal objects used to introspect the state of
          the executor.
class_docstr_tok: ["Manages","the","communication","between","this","process","and","the","worker","processes",".","The","manager","is","run","in","a","local","thread",".","Args",":","executor",":","A","reference","to","the","ProcessPoolExecutor","that","owns","this","thread",".","A","weakref","will","be","own","by","the","manager","as","well","as","references","to","internal","objects","used","to","introspect","the","state","of","the","executor","."]
code: def flag_executor_shutting_down(self):
      # Flag the executor as shutting down and cancel remaining tasks if
      # requested as early as possible if it is not gc-ed yet.
      executor = self.executor_reference()
      if executor is not None:
          executor._shutdown_thread = True
          # Cancel pending work items if requested.
          if executor._cancel_pending_futures:
              # Cancel all pending futures and update pending_work_items
              # to only have futures that are currently running.
              new_pending_work_items = {}
              for work_id, work_item in self.pending_work_items.items():
                  if not work_item.future.cancel():
                      new_pending_work_items[work_id] = work_item
              self.pending_work_items = new_pending_work_items
              # Drain work_ids_queue since we no longer need to
              # add items to the call queue.
              while True:
                  try:
                      self.work_ids_queue.get_nowait()
                  except queue.Empty:
                      break
              # Make sure we do this only once to not waste time looping
              # on running processes over and over.
              executor._cancel_pending_futures = False
  
imports: import os
  from concurrent.futures import _base
  import queue
  import multiprocessing
  import multiprocessing.connection
  from multiprocessing.queues import Queue
  import threading
  import weakref
  from functools import partial
  import itertools
  import sys
  from traceback import format_exception
label_desc: Use image node_id 8 for calling the _ExecutorManagerThread obj's underlying member method code with example usage: obj.flag_executor_shutting_down() without return types