Sometimes it happens that an ongoing ipython evaluation won’t respond to one, or even several, Ctrl-C‘s from the keyboard1.
Is there some other way to goose the ipython process to abort the current evaluation, and come back to its “read” state?
Maybe with kill -SOMESECRETSIGNAL <pid>? I’ve tried a few (SIGINT, SIGTERM, SIGUSR1, …) to no avail: either they have no effect (e.g. SIGINT), or they kill the ipython process. Or maybe some arcane ipython configuration? Some sentinel file? … ?
1“Promptly enough”, that is. Of course, it is impossible to specify precisely how promptly is “promptly enough”; it depends on the situation, the reliability of the delay’s duration, the temperament of the user, the day’s pickings at Hacker News, etc.
It depends on where execution is occurring when you decide to interrupt (in a python function, in a lower level library,…). If this commonly occurs within a function you have created, you can try putting a try/except block in the function and catching
KeyboardInterruptexceptions. It may not break out of a low level library (if that is indeed where you are running) but it should prevent the ipython interpreter from exiting.