On Dec 21, 11:51 am, RajNewbie <raj.indian...@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. -- http://mail.python.org/mailman/listinfo/python-list