def shutdown(self, shutdown_kernel=True): """Shutdown connection and kernel.""" if self.shutting_down: return self.shutting_down = True if shutdown_kernel: if not self.kernel_manager: return self.interrupt_kernel() if self.kernel_manager: self.kernel_manager.stop_restarter() self.spyder_kernel_comm.close() if self.kernel_client is not None: self.kernel_client.stop_channels() if self.kernel_manager: shutdown_thread = QThread(None) shutdown_thread.kernel_manager = self.kernel_manager shutdown_thread.run = self.shutdown_kernel self.shutdown_thread_list.append(shutdown_thread) shutdown_thread.start() else: self.spyder_kernel_comm.close(shutdown_channel=False) if self.kernel_client is not None: self.kernel_client.stop_channels() self.prune_shutdown_thread_list() super(ShellWidget, self).shutdown()