Да предположим, че имам код на Python като следния:
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)
Този код чете всеки ред от входния файл, преминава през няколко функции и записва изхода в изходния файл. Сега Аз знам, че функциите process_line
, process_item
и generate_output_line
никога няма да си пречат една на друга и нека приемем, че входните и изходните файлове са на отделни дискове, така че четенето и записът да не пречат на всеки друго.
Но Python вероятно не знае нищо от това. Разбирам, че Python ще прочете един ред, ще приложи всяка функция на свой ред и ще запише резултата в изхода, а след това ще прочете втория ред само след като изпрати първия ред в изхода, така че че втората линия не влиза в тръбопровода, докато първата не излезе. Разбирам ли правилно как ще протича тази програма? Ако това е начинът, по който работи, има ли някакъв лесен начин да се направи така, че няколко реда да могат да бъдат в конвейера едновременно, така че програмата да чете, пише и обработва всяка стъпка паралелно?