On Tue, 2004-06-22 at 23:09, Prash wrote: > Ok. What I'm trying to do here is use python "thread" module and am not > using threading in pygtk. My aim is to start a new thread every 30 > seconds, fetch news and display in the textview. > > So I write > -------------------------- > import thread > > vlock = thread.allocate_lock() > newsfeedtimer=gtk.timeout_add(30000, startnewthread, dispnewsfeeds) > > def startnewthread(func) > mythread = thread.start_new_thread(func, ()) > return gtk.TRUE > > > def dispnewsfeeds(): > global vlock > # Instantiate the newsfeed class and execute its disp method > vlock.acquire() > news = newsfeedclass() > news.disp(textview) > vlock.release() > ----------------------------- > > > Note that I'm not using > gtk_threads_init/gtk_threads_enter/gtk_threads_leave anywhere. Now is > this supposed to work or am i way off target here? > > I don't know how different this should be, or if this the real problem but when i used javagnome and threading the solution was to plug a callback inside the glib loop which, when the mainloop had time would call it and therefore have no problems with threading issues.
> > > On Tue, 2004-06-22 at 15:38, Christian Robottom Reis wrote: > > On Tue, Jun 22, 2004 at 08:14:22AM +0100, Prash wrote: > > > I started out to code threading but when I finished and ran it - I > > > realized that redhat had compiled pygtk without threading support > > > (another one of their "atrocities"). I opted for laziness and explored > > > generators but I realized I had already coded the algorithm to call many > > > functions and generators didn't make any sense in this case. > > > > Generators won't *always* solve the problem; for instance, when using > > any sort of blocking call into a C extension, nothing apart from threads > > is going to allow the mainloop to run concurrently anyway. > > > > Generators are more coarse-grained than threads, in general, since you > > choose at which points you want to yield control. That's intentional. > > > > > Take the example: I have to call a function to display newsfeed every > > > hour - so I add a timer event. Now that newsfeed function instantiates > > > another class and calls its function to fetch and display data in a > > > textview. Now to call that function in a timeout_add again and adding > > > generator support didn't appeal to me at all. > > > > > > So I'm adding gtk.main_iteration() and hoping it would work smoothly. > > > > If you have the option to insert this in your code, it's an alternative > > (though IMO it usually violates cohesion IMHO since you have UI code in > > your application-specific bits). It has the same coarse-grained > > semantics that generators do, however. > > > > Take care, > > -- > > Christian Robottom Reis | http://async.com.br/~kiko/ | [+55 16] 3361 2331 > > _______________________________________________ > pygtk mailing list [EMAIL PROTECTED] > http://www.daa.com.au/mailman/listinfo/pygtk > Read the PyGTK FAQ: http://www.async.com.br/faq/pygtk/ _______________________________________________ pygtk mailing list [EMAIL PROTECTED] http://www.daa.com.au/mailman/listinfo/pygtk Read the PyGTK FAQ: http://www.async.com.br/faq/pygtk/
