James Y Knight wrote:
> On May 3, 2005, at 12:53 PM, Guido van Rossum wrote:
> 
>>def saving_stdout(f):
>>    save_stdout = sys.stdout
>>    try:
>>        sys.stdout = f
>>        yield
>>    finally:
>>        sys.stdout = save_stdout
> 
> 
> I hope you aren't going to be using that in any threaded program. 

sys.stdout is a global - threading issues are inherent in monkeying with it. At 
least this approach allows all code that redirects stdout to be easily 
serialised:

def redirect_stdout(f, the_lock=Lock()):
     locking(the_lock):
         save_stdout = sys.stdout
         try:
             sys.stdout = f
             yield
         finally:
             sys.stdout = save_stdout

Cheers,
Nick.

-- 
Nick Coghlan   |   [EMAIL PROTECTED]   |   Brisbane, Australia
---------------------------------------------------------------
             http://boredomandlaziness.skystorm.net
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to