Difference between threading.local and protecting data with locks

juxstapose mike.barry at gmail.com
Mon May 1 16:56:58 EDT 2006


Hello,

I have been develop a blocking socket application with threading. The
main thread handles connections and inserts them into python's
protected queue as jobs for the thread pool to handle.

There is not much information on threading.local except that it states
that in maintains variable uniqueness among multiple instances of the
same thread.  I am assuming that it implements some sort of locking
functionality under the covers?  Is it possible to run into a race
condition using threading.local?

In a non-blocking threaded socket receive handler is it better to use a
threading.local variable for writes or protect the write with a
lock.acquire/lock.release ?

I know the size of the incoming request so the receive handler finishes
when the max size is reached.  However in case of network problems I
also have timeout functionality. Both of these behaviors require
writing to variables in a possible critical section.
What is the best way to handle writes in a multi-threaded non-blocking
receive handler?




More information about the Python-list mailing list