Предположим, у меня есть некоторый код 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 будет читать одну строку, применять каждую функцию по очереди и записывать результат в вывод, а затем он будет читать вторую строку только после отправки первой строки в вывод, поэтому что вторая линия не входит в конвейер, пока не выйдет первая. Я правильно понимаю, как будет течь эта программа? Если это так, то есть ли какой-нибудь простой способ сделать так, чтобы несколько строк одновременно находились в конвейере, чтобы программа читала, писала и обрабатывала каждый шаг параллельно?