Python está paralelizando automáticamente secciones IO y CPU o vinculadas a la memoria?

Esta es una pregunta de seguimiento en unel anterio.

onsidere este código, que es menos juguetón que el de laPregunta anterio (pero aún mucho más simple que la real)

import sys
data=[]

for line in open(sys.argv[1]):
    data.append(line[-1])

print data[-1]

Ahora, esperaba un tiempo de ejecución más largo (mi archivo de referencia tiene 65150224 líneas de largo), posiblemente mucho más. Este no fue el caso, ¡se ejecuta en ~ 2 minutos en el mismo hw que antes!

¿Es data.append () muy ligero? No lo creo, así que escribí este código falso para probarlo:

data=[]
counter=0
string="a\n"

for counter in xrange(65150224):
    data.append(string[-1])

print data[-1]

Esto se ejecuta en 1.5 a 3 minutos (hay una gran variabilidad entre las ejecuciones)

¿Por qué no obtengo de 3.5 a 5 minutos en el programa anterior? Obviamente data.append () está sucediendo en paralelo con el IO.

¡Estas son buenas noticias

¿Pero como funciona? ¿Es una característica documentada? ¿Hay algún requisito en mi código que deba seguir para que funcione lo más posible (además de las actividades de IO y de memoria / CPU de equilibrio de carga)? ¿O es simplemente almacenamiento en memoria intermedia / almacenamiento en caché en acción?

De nuevo, etiqueté "linux" esta pregunta, porque solo me interesan las respuestas específicas de linux. Siéntase libre de dar respuestas independientes del sistema operativo o incluso de otro sistema operativo, si cree que vale la pena hacerlo.

Respuestas a la pregunta(10)

Su respuesta a la pregunta