Are python objects thread-safe?
Rhamphoryncus
rhamph at gmail.com
Mon Dec 22 04:16:30 EST 2008
On Dec 21, 11:51 am, RajNewbie <raj.indian... at gmail.com> wrote:
> Say, I have two threads, updating the same dictionary object - but for
> different parameters:
> Please find an example below:
> a = {file1Data : '',
> file2Data : ''}
>
> Now, I send it to two different threads, both of which are looping
> infinitely:
> In thread1:
> a['file1Data'] = open(filename1).read
> and
> in thread2:
> a['file2Data'] = open(filename2).read
>
> My question is - is this object threadsafe? - since we are working on
> two different parameters in the object. Or should I have to block the
> whole object?
In general, python makes few promises. It has a *strong* preference
towards failing gracefully (ie an exception rather than a segfault),
which implies atomic operations underneath, but makes no promise as to
the granularity of those atomic operations.
In practice though, it is safe to update two distinct keys in a dict.
More information about the Python-list
mailing list