class_docstr: A KernelClient that provides thread-safe sockets with async callbacks on message replies.
      
code: def start_channels(self, shell=True, iopub=True, stdin=True, hb=True):
      self.ioloop_thread = IOLoopThread()
      self.ioloop_thread.start()
  
      if shell:
          self.shell_channel._inspect = self._check_kernel_info_reply
  
      super(ThreadedKernelClient, self).start_channels(
          shell, iopub, stdin, hb
      )
  
imports: from __future__ import absolute_import
  import atexit
  import errno
  import sys
  from threading import Thread, Event
  import time
  from zmq import ZMQError
  from zmq.eventloop import ioloop, zmqstream
  from traitlets import Type, Instance
  from jupyter_client.channels import HBChannel
  from jupyter_client import KernelClient
label_desc: Use image node_id 2 for calling the ThreadedKernelClient obj's underlying member method code with example usage: obj.start_channels(shell, iopub, stdin, hb) without return types