On Sun, Apr 15, 2007 at 04:39:01AM +0000, Funky Fred wrote: > > > Just to throw the idea out there: > > You can use a hybrid between idle_add & threads. > I built a gui with threads that build a data structure, and invoke > callbacks on an update queue thread that mostly sleeps, but occasionally > wakes up and checks for pending updates. If there are updates pending, it > invokes a callback on the main (gui) class. Since I occasionally got weird > lock-ups having the update thread invoke a callback that calls gtk methods > in another thread (I think because it doesn't actually get executed in that > other thread), I just have the update thread invoke a callback that updates > a flag in the gui (gtk) thread, and use a gtk idle func (via idle_add) that > checks the update flag, and updates the gui as necessary. > > A bit intricate, I guess, but it works, no lock-ups, and the gui updates > nicely. > > The only real catch to pygtk, threads, and python, is that pythons thread > management is .. lacking. There is no real way to signal threads to > shutdown. So if someone closes the gui, the best you can do is invoke a > callback on the other thread that updates a flag, they hopefully check that > in time to shutdown before the gui closes and/or you exit python. This can > be problematic if your background threads do computationally intense stuff > and don't necessarily check their "die" flag in time.
Well I once wrote the following, to allow threads raising exceptions in each other. http://groups.google.be/group/comp.lang.python/msg/5833130893cee567?hl=nl& Maybe the idea is usefull for you. -- Antoon Pardon _______________________________________________ pygtk mailing list [email protected] http://www.daa.com.au/mailman/listinfo/pygtk Read the PyGTK FAQ: http://www.async.com.br/faq/pygtk/
