Are file.write
operations atomic in Python or C?
Example
Consider the following two threads
Thread 1
with open('foo', 'a') as f:
f.write('123456')
Thread 2
with open('foo', 'a') as f:
f.write('abcdef')
Are we guaranteed not to get intermingled text like the following?
1a2b3c4d5e6f
or
123abc456def
but instead get one of the two possible correct results
123456abcdef
abcdef123456
Note that there is a single call to write in each thread, obviously atomic multiple writes would require some sort of lock. I'm also aware of file-based locks. The ideal answer to this question is yes/no along with evidence/documentation.