¿Qué sucede si inicio sesión en el mismo archivo desde varios procesos diferentes en Python?

Pasé horas investigando el comportamiento, primero sobre esas preguntas:

Atomicidad de `write (2)` a un sistema de archivos local¿Cómo puedo sincronizar, hacer atómicas, escrituras en un archivo de dos procesos?¿Cómo se determina mediante programación si la llamada al sistema de "escritura" es atómica en un archivo en particular?¿Qué sucede si una llamada al sistema de escritura es llamada en el mismo archivo por 2 procesos diferentes simultáneamente?http://article.gmane.org/gmane.linux.kernel/43445

Parece que si usamos el indicador 'O_APPEND' al abrir el archivo, siempre estará bien iniciar sesión en el mismo archivo desde múltiples procesos, en Linux. Y creo que Python seguramente usa la bandera 'O_APPEND' en su módulo de registro.

Y de una pequeña prueba:

#!/bin/env python
import os
import logging

logger = logging.getLogger('spam_application')
logger.setLevel(logging.DEBUG)
# create file handler which logs even debug messages
fh = logging.FileHandler('spam.log')
logger.addHandler(fh)
formatter = logging.Formatter(
    '%(asctime)s - %(name)s - %(levelname)s - %(message)s')
fh.setFormatter(formatter)

for i in xrange(10000):
    p = os.getpid()
    logger.debug('Log line number %s in %s', i, p)

Y lo ejecuto con:

./test.py & ./test.py & ./test.py & ./test.py &

Encontré que no había nada malo en spam.log. Este comportamiento puede apoyar la conclusión anterior.

Pero los problemas que vienen:

Qué significa estoaquí?¿Y cuáles son las escenas para usar?esta, solo para la rotación de archivos?

Por último, si dos procesos están escribiendo en un mismo archivo, quiero decir que están invocando escribir (2) en el mismo archivo, ¿quién se asegura de que los datos de los dos procesos no se intercalen (núcleo o sistema de archivos?), Y cómo. NOTA: solo quiero ver en profundidad la syscall de escritura, cualquier respuesta al respecto es bienvenida.]

EDITAR1:

Haceresta yesta solo existe para la compatibilidad entre diferentes entornos os, como windows, linux o mac?

EDIT2:

Una prueba más, alimenta cadenas de 8 KB a logging.debug cada vez. Y esta vez puedo ver el comportamiento de "intercalación" en spam.log. Este comportamiento es exactamente lo que se especifica sobre PIPE_BUF en una página anterior. Entonces parece que el comportamiento es claro en Linux, usar O_APPEND está bien si el tamaño para escribir (2) es menor que PIPE_BUF.

Respuestas a la pregunta(3)

Su respuesta a la pregunta