-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On Thursday 10 July 2008 18:50:12 you wrote: > James K. Gruetzner wrote: > >>> I'm running Fedora 8, python 2.5.1, and matplotlib 0.91.2-1.fc8 from > >>> the yum repository. Backend is set to GTKAgg in my matplotlibrc file. > >> > >> (On this list top-posting is frowned upon -- it makes the conversation > >> difficult to follow.) > > > > I understand. Sorry. Each list is different: I'm new here, and will > > try remember. > > No problem. Also, don't forget reply-to-all, so that the whole of the > list can chime in here. :)
Arrrgh!!!! Almost all my other lists have that as default, so I'm out of the habit of checking. > >> Your analysis is correct, the call to show() activates the GUI mainloop > >> and does not return until the window is closed. Within ipython there is > >> some magic that occurs that runs the mainloop in a separate thread. > >> What do you need to do after the call to show()? > > In my current situation, I need to extract and display data (images) > > independently from several different files as part of debugging a larger > > application. (I'm really not reading a file into the original array, but > > running some shell commands using os.popen2(...) to eventually populate > > the array: that part works.) The upshot is that in the course of a > > few hours, I may have to display (and kill) a large number of images. > > The current "hang" means that I have an effective memory leak, and I'd > > have to keep track of Process IDs and manually kill them every so often. > > Were the pylab.show() command to return after closing the window > > (clicking on the X), then a backgrounded or daemon process should > > terminate. But it doesn't. This seems to be the same problem causing > > Dragan S.'s problem. > > I'm not sure if this is a bug or a feature, but would assuredly like to > > find a way to kill the leak. > I'm not sure about the lack of returning after the call show(), though > it does sound like a bug. What I *do* know is that multiple calls to > show() is frowned upon (if not just completely unsupported). What you > probably want to look at is the dynamic_image_gtkagg.py example (in the > examples/ directory). Since you're already using GtkAgg, it should be > *really* easy to adapt the example to fit your needs. I've personally > adapted it to do a live data display of a simulation run. I don't really need any live interaction or a live data display; I just want the thang to stop running (i.e., the process to terminate) when the figure window is closed. Unfortunately, the dynamic_image_gtkagg.py example has the same problem. It's final line is "show()". When run as a background process, everything displays well --- but when the window is closed (click on X), the process fails to terminate. So . . . the root cause is that show() does not return when the shown image is closed. > If you *need* it to wait for user interaction before continuing, there might > be a little bit more work, but I don't think it'd be much. You could > probably instead look at some of the Matplotlib UI widgets, like in the > buttons.py example. I really don't need user interaction per se, I may have to go that route an establish some sort of "close window and exit" event. Hmmm: another learning opportunity . . . . :-) The show() function is defined in .../matplotlib/backends/backend_gtk.py and looks to be calling gtk.main(), which, according to .../gtk-2.0/gtk/__init__.py appears to be deprecated in favor of mainloop(). And that's as far as I can go in this: I'm not graphics whiz, and, in fact, having reached somewhat beyond my skill level, can't even figure out how to trace the mainloop call back further. I would think that the gtk mainloop would terminate when the window closes (which termination should propagate back up the stack), but apparently that doesn't happen. > Ryan > > -- > Ryan May > Graduate Research Assistant > School of Meteorology > University of Oklahoma Thanks again for your help thus far. James -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.7 (GNU/Linux) iD8DBQFId5ChxOXthSHeGJIRAqj4AKDG8RGxoQYl5va2olVUV2WQ1zjyOQCeImlr AT+d5Fl2FuF9yWxLaJWbjEg= =wZPg -----END PGP SIGNATURE----- ------------------------------------------------------------------------- Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW! Studies have shown that voting for your favorite open source project, along with a healthy diet, reduces your potential for chronic lameness and boredom. Vote Now at http://www.sourceforge.net/community/cca08 _______________________________________________ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users