calling functions across threads

Steven Bethard steven.bethard at gmail.com
Wed Dec 29 15:55:19 EST 2004


Fernando Perez wrote:
> Steven Bethard wrote:
> 
> 
>>Fernando Perez wrote:
>>
>>>Steven Bethard wrote:
>>>
>>>
>>>
>>>>I get the correct output, but if you run this yourself, you'll see that
>>>>the numbers 1 through 10 aren't printed in sync with the writes (i.e.
>>>>every half second); they're all printed at the end.  Could someone
>>>>explain to me why this happens, and how (if possible) I can get the
>>>>numbers printed in sync with the appends to the list?
>>>
>>>
>>>This is just a shot in the dark, as I'm quite ignorant of threading details.
>>>But what happens if you try adding a sys.stdout.flush() call after the print
>>>statement in your custom update() method?  It may just be a flushing problem
>>>what makes the output appear out of sync...
>>
>>Strangely enough, that causes PythonWin to hang...  Why that would be
>>true, I have no idea...
> 
> 
> Mmh.  I wouldn't be surprised if under pythonwin, sys.stdout is not the true
> python sys.stdout.  Check the following:
> 
> sys.stdout is sys.__stdout__
> 
> The answer is probably false.  In that case, they may have implemented some
> incomplete object whose flush method is broken, or something similar.  I can't
> confirm, as I don't have windows access, so this is just a guess.

Just to verify, yes, the answer is False:

py> import sys
py> sys.stdout is sys.__stdout__
False

Is there a list to ask PythonWin specific questions somewhere, or should 
I just wait for a PythonWin expert around here?

Steve



More information about the Python-list mailing list