[Baypiggies] multithreading question
Alex Martelli
aleax at google.com
Wed Sep 17 23:38:57 CEST 2008
On Wed, Sep 17, 2008 at 2:17 PM, Aahz <aahz at pythoncraft.com> wrote:
> On Wed, Sep 17, 2008, Shannon -jj Behrens wrote:
>>
>> I know that threads are the devil and all, but I have a threading
>> question ;)
>
> What makes you say that threads are the devil?
>
>> I'm using the queue module to coordinate a bunch of threads. Those
>> threads need to log a line to STDOUT. The line is short. Can I count
>> on the GIL to make sure that writing a single line to STDOUT is
>> atomic, or do I need to be more paranoid?
>
> That depends really on the underlying OS library. Mostly yes: a single
> Python C-level call to fwrite() will be atomic. So technically, you're
> not counting on the GIL. ;-)
I don't consider this reliable, in general: depending on the length of
data being written, writes on distributed filesystems such as NFS or
SMB are notoriously prone to NOT being atomic; how can I ensure that
stdout will never be redirected to a file living on such a filesystem,
for example? IMHO, using the logging module or a dedicated
output-writing thread is well worth the (small) inconvenience.
Alex
More information about the Baypiggies
mailing list