code: def shutdown(self, hub=True, targets='all', block=False):
          
          if self.controller:
              logger.debug("IPP:Shutdown sequence: Attempting controller kill")
              self.controller.close()
  
          # We do not actually do executor.shutdown because
          # this blocks even when requested to not block, killing the
          # controller is more effective although impolite.
          # x = self.executor.shutdown(targets=targets,
          #                           hub=hub,
          #                           block=block)
  
          logger.debug("Done with executor shutdown")
          return True
docs: Shutdown the executor, including all workers and controllers.
  
          The interface documentation for IPP is `here <http://ipyparallel.readthedocs.io/en/latest/api/ipyparallel.html#ipyparallel.Client.shutdown>`_
  
          Kwargs:
              - hub (Bool): Whether the hub should be shutdown, Default:True,
              - targets (list of ints| 'all'): List of engine id's to kill, Default:'all'
              - block (Bool): To block for confirmations or not
  
          Raises:
               NotImplementedError