¿Cómo puedo paralelizar una tubería de generadores / iteradores en Python?

Supongo que tengo un código de Python como el siguiente:

input = open("input.txt")
x = (process_line(line) for line in input)
y = (process_item(item) for item in x)
z = (generate_output_line(item) + "\n" for item in y)
output = open("output.txt", "w")
output.writelines(z)

Este código lee cada línea del archivo de entrada, la ejecuta a través de varias funciones y escribe la salida en el archivo de salida. AhoraI sepa que las funcionesprocess_line, process_item ygenerate_output_line nunca interferirá entre sí, y supongamos que los archivos de entrada y salida están en discos separados, de modo que la lectura y la escritura no interferirán entre sí.

Pero Python probablemente no sabe nada de esto. Tengo entendido que Python leerá una línea, aplicará cada función por turno y escribirá el resultado en la salida, y luego leerá la segunda línea solodespué enviando la primera línea a la salida, de modo que la segunda línea no ingrese a la tubería hasta que la primera haya salido. ¿Entiendo correctamente cómo fluirá este programa? Si así es como funciona, ¿hay alguna manera fácil de hacerlo para que varias líneas puedan estar en la tubería a la vez, para que el programa lea, escriba y procese cada paso en paralelo?

Respuestas a la pregunta(1)

Su respuesta a la pregunta