[IPython-User] IPython 0.11.x "sluggishness" in pylab mode

Wes McKinney wesmckinn@gmail....
Thu Oct 21 19:59:57 CDT 2010


On Thu, Oct 21, 2010 at 8:09 PM, Fernando Perez <fperez.net@gmail.com> wrote:
> Hey Wes,
>
> On Tue, Oct 19, 2010 at 4:18 PM, Wes McKinney <wesmckinn@gmail.com> wrote:
>>
>> start IPython in pylab mode (WXAgg backend default)
>> wait 60 seconds
>> start typing something, problem present
>> %gui (to disable gui backends)
>> wait 60 seconds
>> start typing something, no lag / hanging
>> %gui wx
>> wait 60 seconds
>> start typing something, problem present
>
> Unfortunately this is a consequence of the new non-threads-based GUI
> code, how Wx works, and the desire to be gentle to laptop batteries.
>
> - new gui code doesn't use threads, and instead wires PyOSInputHook
> calls into the gui event loop.
>
> - Wx has no notion of a true idle timer that we can hook into, so that
> we get called only when idle.
>
> - so we must process all events and then try to sleep.
>
> - sleep too little and we'll use too much cpu even when idle, killing
> laptop batteries
>
> - sleep too long and it's sluggish.
>
> So we have a backoff strategy that tries to balance low cpu
> consumption with resume times:
>
> http://github.com/ipython/ipython/blob/master/IPython/lib/inputhookwx.py#L144
>
>
> Some comments:
>
> - if you use Tk, Qt or GTK, this problem doesn't exist.  It's specific to Wx.
>
> - We're happy to get feedback on improved approaches that make this
> better for the user.  We could have the sleep cycle instead be a
> user-configurable function so the user decides what sleep strategy he
> wants, or hardcode the strategy but leave the *values* of the backoff
> tunable by the user, etc...
>
> It's not pretty, any ideas for improvements are welcome.   Or switch
> to Qt if you can :) [that's what I'm doing]
>
> Cheers,
>
> f
>

Thanks Fernando for that detailed reponse. Makes sense to me-- it's
clear that you've thought a lot more about the problem than I have!
I'll see about installing PyQT (of course not included with EPD
because of our dear friend the GPL). I was just concerned that maybe
it was not a known problem.

Best,
Wes


More information about the IPython-User mailing list