class_docstr: A ParallelBackend which will use a multiprocessing.Pool.
  
  Will introduce some communication and memory overhead when exchanging
  input and output data with the with the worker Python processes.
  However, does not suffer from the Python Global Interpreter Lock.
class_docstr_tok: ["A","ParallelBackend","which","will","use","a","multiprocessing.Pool",".","Will","introduce","some","communication","and","memory","overhead","when","exchanging","input","and","output","data","with","the","with","the","worker","Python","processes",".","However",",","does","not","suffer","from","the","Python","Global","Interpreter","Lock","."]
docstr: Shutdown the process or thread pool
code: def terminate(self):
      """Shutdown the process or thread pool"""
      super(MultiprocessingBackend, self).terminate()
      if self.JOBLIB_SPAWNED_PROCESS in os.environ:
          del os.environ[self.JOBLIB_SPAWNED_PROCESS]
  
imports: import gc
  import os
  import sys
  import warnings
  import threading
  from abc import ABCMeta, abstractmethod
  from .format_stack import format_exc
  from .my_exceptions import WorkerInterrupt, TransportableException
  from ._multiprocessing_helpers import mp
  from ._compat import with_metaclass
label_desc: Use image node_id 3 for calling the MultiprocessingBackend obj's underlying member method code with example usage: obj.terminate() without return types