code: def __init__(self, view=None, **kwargs):
      super().__init__(**kwargs)
      self._cluster_owner = False
      self._client_owner = False
      if view is None:
          self._client_owner = True
          try:
              # load the default cluster
              cluster = ipp.Cluster.from_file()
          except FileNotFoundError:
              # other load errors?
              cluster = self._cluster = ipp.Cluster()
              self._cluster_owner = True
              cluster.start_cluster_sync()
          else:
              # cluster running, ensure some engines are, too
              if not cluster.engines:
                  cluster.start_engines_sync()
          rc = cluster.connect_client_sync()
          rc.wait_for_engines(cluster.n or 1)
          view = rc.load_balanced_view()
  
          # use cloudpickle or dill for closures, if available.
          # joblib tends to create closures default pickle can't handle.
          try:
              import cloudpickle  # noqa
          except ImportError:
              try:
                  import dill  # noqa
              except ImportError:
                  pass
              else:
                  view.client[:].use_dill()
          else:
              view.client[:].use_cloudpickle()
      self._view = view
  
file_path: ipyparallel/ipyparallel/client/_joblib.py
imports: from joblib.parallel import AutoBatchingMixin, ParallelBackendBase
  import ipyparallel
label_desc: Use image node_id 1 to create a new IPythonParallelBackend object from inherited base classes: AutoBatchingMixin, ParallelBackendBase with example: obj = IPythonParallelBackend(view)