Writing to same file from two threads

Jens Thoms Toerring jt at toerring.de
Wed Feb 27 11:05:09 EST 2013


Antoine Pitrou <solipsis at pitrou.net> wrote:
> Jens Thoms Toerring <jt <at> toerring.de> writes:
> > 
> > Paul Rubin <no.email <at> nospam.invalid> wrote:
> > > jt <at> toerring.de (Jens Thoms Toerring) writes:
> > > > in garbled output (i.e. having some output from A inside a
> > > > line written by B or vice versae) because the "main thread" or
> > 
> > > Yes they do get garbled like that.  Preferred Python style is put a
> > > single thread in charge of all the i/o to that file, and communicate
> > > with it by message passing through Queue objects.  That is safer than
> > > directly using locks.
> > 
> > Thank you for confirmig my suspicion But you have induced
> > another question: why is using a Queue safer than locking (not
> > that I doubt that it might be more elegant etc.). Is it "safer"
> > because it's less likely that one gets it wrong (e.g. by for-
> > grtting to acquire the lock) or is there something inherently
> > unsafe about locks?

> For the record, binary files are thread-safe in Python 3, but text files
> are not.
> Locks are safe if you use them well. As you point out, if you forget
> to acquire your lock, or if you devise a situation where there is a
> deadlock between competing locks, you can have difficult to diagnose
> issues. Queues have their internal locking all done for you.

Thank you for your kind answers!
                                  Best regards, Jens
-- 
  \   Jens Thoms Toerring  ___      jt at toerring.de
   \__________________________      http://toerring.de



More information about the Python-list mailing list