class_docstr: Pickler that accepts custom reducers.
  
  TODO python2_drop : can this be simplified ?
  
  HIGHEST_PROTOCOL is selected by default as this pickler is used
  to pickle ephemeral datastructures for interprocess communication
  hence no backward compatibility is required.
  
  `reducers` is expected to be a dictionary with key/values
  being `(type, callable)` pairs where `callable` is a function that
  give an instance of `type` will return a tuple `(constructor,
  tuple_of_objects)` to rebuild an instance out of the pickled
  `tuple_of_objects` as would return a `__reduce__` method. See the
  standard library documentation on pickling for more details.
code: def __init__(self, writer, reducers=None, protocol=HIGHEST_PROTOCOL):
      Pickler.__init__(self, writer, protocol=protocol)
      if reducers is None:
          reducers = {}
      if hasattr(Pickler, "dispatch"):
          # Make the dispatch registry an instance level attribute instead of
          # a reference to the class dictionary under Python 2
          self.dispatch = Pickler.dispatch.copy()
      else:
          # Under Python 3 initialize the dispatch table with a copy of the
          # default registry
          self.dispatch_table = copyreg.dispatch_table.copy()
      for type, reduce_func in reducers.items():
          self.register(type, reduce_func)
  
imports: import copyreg
  import sys
  import warnings
  from time import sleep
  from pickle import Pickler
  from pickle import HIGHEST_PROTOCOL
  from io import BytesIO
  from ._memmapping_reducer import get_memmapping_reducers
  from ._memmapping_reducer import TemporaryResourcesManager
  from ._multiprocessing_helpers import mp, assert_spawning
  from multiprocessing.pool import Pool
label_desc: Use image node_id 1 to create a new CustomizablePickler object from inherited base classes: Pickler with example: obj = CustomizablePickler(writer, reducers, protocol)