Problem with multithreading
jeff_barish at earthlink.net
Thu Jun 25 21:47:30 CEST 2009
Lou Pecora wrote:
> In article <h20d7k$nih$03$1 at news.t-online.com>,
> "larudwer" <larudwer at freenet.de> wrote:
>> "Jeffrey Barish" <jeff_barish at earthlink.net> schrieb im Newsbeitrag
>> news:mailman.2091.1245902997.8015.python-list at python.org...
>> > Jeffrey Barish wrote:
>> >> I have a program that uses multithreading to monitor two loops. When
>> >> something happens in loop1, it sends a message to loop2 to have it
>> >> execute
>> >> a command. loop2 might have to return a result. If it does, it puts
>> >> the
>> >> result in a queue. loop1, meanwhile, would have blocked waiting for
>> >> something to appear in the queue. The program works for a while, but
>> >> eventually freezes. I know that freezing is a sign of deadlock.
>> >> However,
>> >> I put in print statements to localize the problem and discovered
>> >> something
>> >> weird. The freeze always occurs at a point in the code with the
>> >> following
>> >> statements:
>> >> print "about to try"
>> >> try:
>> >> print "in try"
>> >> <do something>
>> >> I get "about to try", but not "in try". Is this observation
>> >> consistent
> Try putting a flush in after the 2nd print statement in case the output
> is left in some I/O buffer when the thing terminates. e.g.
> import sys
> print 'in try"
> <do something>
I was hoping for some suggestions of things to think about, so thanks
especially to those who had such suggestions. Believe it or not (and I'm
having trouble believing it myself), I didn't think to use flush. When I
did, I found that, indeed, the program did progress past the try statement.
It made it to a call to GStreamer (playbin2), which has been proving itself
intractable in my experience. Note that my test program (which works)
excised GStreamer. The next step will be to try again to compile the
latest version of PyGST as the version in Ubuntu 9.04 is one generation
old. The last time I tried, the compile failed. This is the first time in
days that I have had any hope.
More information about the Python-list