Will python ever have signalhandlers in threads?

Jean Brouwers mrjean1ATcomcastDOTnet at no.spam.net
Sat Nov 13 13:45:04 EST 2004


Quite interesting, I'll check the Shell.py for more details.  Thank you.

/Jean Brouwers



In article <mailman.6323.1100306430.5135.python-list at python.org>,
Fernando Perez <fperez528 at yahoo.com> wrote:

> Jean Brouwers wrote:
> 
> > 
> > Fernando,
> > 
> > Just curious, does 'gtk/WX' in your message below mean wxPython?
> 
> Yes.
> 
> > If so, does this signal handling code actually work with wxPython?> 
> 
> It does, but not in a generic manner: this is code for ipython to support
> matplotlib's WX backend in an interactive shell.  It allows you to type into
> ipython plotting commands which cause matplotlib to open a WX plotting window,
> and the interactive terminal continues to function.  You can have multiple WX
> plotting windows open, and the command line keeps on chugging.
> 
> But this relies on a special collaborative hack between matplotlib and
> ipython.
> matplotlib, in its WX and GTK backends (Tk doesn't need this) has a special
> flag to indicate who is in control of the mainloop.  In standalone scripts,
> everything works in the typical manner.  But if ipython comes in, it will set
> this flag, telling matplotlib to keep off the mainoop.
> 
> It's pretty hackish, but it works in practice pretty well.  
> 
> here's the relevant matplotlib WX code (trimmed of docstring):
> 
> def show():
> 
>     for figwin in Gcf.get_all_fig_managers():
>         figwin.frame.Show()
>         figwin.canvas.realize()
>         figwin.canvas.draw()
> 
>     if show._needmain and not matplotlib.is_interactive():
>         wxapp.MainLoop()
>         show._needmain = False
> show._needmain = True
> 
> When ipython starts up, it sets show._needmain to False, so that the
> Mainloop()
> call is never made.  You can look at the whole code from ipython if you wish,
> it's in IPython/Shell.py.
> 
> best,
> 
> f
>



More information about the Python-list mailing list