docstr: register dispatchers for streams
docstr_tok: ["register","dispatchers","for","streams"]
code: def start(self):
      """register dispatchers for streams"""
      self.io_loop = ioloop.IOLoop.current()
      if self.control_stream:
          self.control_stream.on_recv(self.dispatch_control, copy=False)
  
      def make_dispatcher(stream):
          def dispatcher(msg):
              return self.dispatch_shell(stream, msg)
  
          return dispatcher
  
      for s in self.shell_streams:
          s.on_recv(make_dispatcher(s), copy=False)
  
      # publish idle status
      self._publish_status("starting")
  
imports: from __future__ import print_function
  import sys
  import time
  import logging
  import uuid
  from datetime import datetime
  from signal import signal, default_int_handler, SIGINT
  import zmq
  from tornado import ioloop
  from zmq.eventloop.zmqstream import ZMQStream
  from traitlets.config.configurable import SingletonConfigurable
  from IPython.core.error import StdinNotImplementedError
  from ipython_genutils import py3compat
  from ipython_genutils.py3compat import unicode_type, string_types
  from ipykernel.jsonutil import json_clean
  from traitlets import Any, Instance, Float, Dict, List, Set, Integer, Unicode, Bool, observe, default
  from jupyter_client.session import Session
  from ._version import kernel_protocol_version
label_desc: Use image node_id 10 for calling the Kernel obj's underlying member method code with example usage: obj.start() and returns: dispatcher, self