diff --git a/spyderlib/widgets/externalshell/baseshell.py b/spyderlib/widgets/externalshell/baseshell.py
index <HASH>..<HASH> 100644
--- a/spyderlib/widgets/externalshell/baseshell.py
+++ b/spyderlib/widgets/externalshell/baseshell.py
@@ -229,6 +229,13 @@ class ExternalShellBase(QWidget):
         if ask_for_arguments and not self.get_arguments():

             self.set_running_state(False)

             return

+        try:

+            self.disconnect(self.terminate_button, SIGNAL("clicked()"),

+                            self.process.terminate)

+            self.disconnect(self.kill_button, SIGNAL("clicked()"),

+                            self.process.terminate)

+        except:

+            pass

         self.create_process()

 

     def get_arguments(self):
External Console: Disconnect signals from kill and terminate buttons before creating a new process

Fixes issue <I>

- This was slowing down creating a new process after several times of killing
the previous one.