Thanks for your reply.

--- On Sat, 11/13/10, Eric Firing <efir...@hawaii.edu> wrote:
> In the gtk backend, draw_idle calls gobject.idle_add 
> 
> Thus, "idle" means the gui event loop has no higher
> priority events.  Is 
> this condition reached only at the end of the script?

With Python, there is only one thread (running both Python and the GUI). So the 
GUI event loop won't start until the end of the script, so there is no 
inadvertent redrawing regardless of interactive being True or False.
With ipython, I am not sure if they are using one thread, or one thread for 
Python and one thread for the GUI. But in practice, in ipython I also don't 
find any evidence of inadvertent redrawing. For example, this script:

import matplotlib
matplotlib.use("gtkagg")
import matplotlib.pyplot as plt
import numpy

x = numpy.random.random(400000)
y = x + numpy.random.random(400000)
plt.figure()
plt.hexbin(x, y, gridsize=300)
for i in range(1000):
    plt.xlabel('a label')
plt.show()

both with python and ipython take an equal amount of time regardless of 
interactive being True or False. If there were any redrawing after each call to 
plt.xlabel, this script would take forever.

> Reminder: the interactive setting controls
> draw_if_interactive, which is 
> what we are talking about here, but also whether or not
> show() blocks. 
> So we may not need draw_if_interactive, but unless we can
> dispense with 
> show entirely, we will still need an interactive setting.

If matplotlib were always interactive, then I don't see a good reason for 
non-blocking show().

> Returning to the issue raised by the OP, however, the
> question is 
> whether the present MacOSX behavior (windows pop up) or the
> non-MacOSX 
> behavior (they don't in non-interactive mode until/unless
> show() is 
> called) is what we really want.  It seems to me that
> we should preserve 
> some way of getting this second behavior.

I agree. For example, if a user wants to make a figure for the sole purpose of 
creating a PNG file, there should be a way to do this without the figure 
popping up as a window.

--Michiel.


      

------------------------------------------------------------------------------
Centralized Desktop Delivery: Dell and VMware Reference Architecture
Simplifying enterprise desktop deployment and management using
Dell EqualLogic storage and VMware View: A highly scalable, end-to-end
client virtualization framework. Read more!
http://p.sf.net/sfu/dell-eql-dev2dev
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to