[IPython-dev] Threads and Ctrl-C
Hans Meine
hans_meine at gmx.net
Thu Aug 18 11:53:21 EDT 2005
Hi!
I don't know how many of you are actually working with IPython and GUI threads
- from my traceback experiences, I seem to be rather alone with my
strugglings. (I guess other toolkits than Qt - which I use - should have
similar problems, but I might be wrong.)
OK, try this:
Start "ipython -qthread", enter:
In [1]: import time
In [2]: for i in range(60): time.sleep(1)
...:
Now press Ctrl-C, you will get a nice message "KeyboardInterrupt - Press
<Enter> to continue." which is more or less meaning "I don't know what to do
with your keypress, since I am totally unaware that the other thread might be
executing some code".
In the before-mentioned Qt Python shell we wrote at our lab, we had a similar
situation (probably Toni will be interested in this), but we actually had two
separate processes for the GUI and Python, mostly to solve exactly this
single Ctrl-C problem: As long as Python is doing something, the Ctrl-C
event would not get through to the GUI event handler, so the event handler
could not interrupt the interpreter.
Ullrich Köthe's solution was to write a small "interrupt" module that is
triggered from the other process via a socket and interrupts the interpreter
by calling PyErr_SetInterrupt(). It's not too large; I attached it for your
inspiration. IMHO having the possibility to interrupt some loop you
accidentally started with wrong parameters is a crucial feature?!
Greetings,
Hans
-------------- next part --------------
A non-text attachment was scrubbed...
Name: interrupt.c
Type: text/x-csrc
Size: 4194 bytes
Desc: not available
URL: <http://mail.python.org/pipermail/ipython-dev/attachments/20050818/92614b41/attachment.c>
More information about the IPython-dev
mailing list