code: def restart_kernel(self):
          
          sw = self.shellwidget
  
          if not running_under_pytest() and self.ask_before_restart:
              message = _('Are you sure you want to restart the kernel?')
              buttons = QMessageBox.Yes | QMessageBox.No
              result = QMessageBox.question(self, _('Restart kernel?'),
                                            message, buttons)
          else:
              result = None
  
          if (result == QMessageBox.Yes or
                  running_under_pytest() or
                  not self.ask_before_restart):
              if sw.kernel_manager:
                  if self.infowidget.isVisible():
                      self.infowidget.hide()
                      sw.show()
                  try:
                      sw.kernel_manager.restart_kernel(
                          stderr=self.stderr_handle)
                  except RuntimeError as e:
                      sw._append_plain_text(
                          _('Error restarting kernel: %s\n') % e,
                          before_prompt=True
                      )
                  else:
                      # For issue 6235.  IPython was changing the setting of
                      # %colors on windows by assuming it was using a dark
                      # background.  This corrects it based on the scheme.
                      self.set_color_scheme(sw.syntax_style)
                      sw._append_html(_("<br>Restarting kernel...\n<hr><br>"),
                                      before_prompt=False)
              else:
                  sw._append_plain_text(
                      _('Cannot restart a kernel not started by Spyder\n'),
                      before_prompt=True
                  )
docs: Restart the associated kernel.
  
          Took this code from the qtconsole project
          Licensed under the BSD license