Python: прочитать текстовый файл и отправить фрагмент строк на обработкуPython

Программы на Python
Anonymous
Python: прочитать текстовый файл и отправить фрагмент строк на обработку

Сообщение Anonymous »

У меня есть текстовый файл, и для каждой строки я хочу выполнить довольно тяжелые вычисления, а количество строк в файле может быть большим (миллионы).
Я' м с использованием многопроцессорной обработки.

Код: Выделить всё

num_workers = 1
with open(my_file, 'r') as f:
with multiprocessing.pool.ThreadPool(num_workers) as pool:
for data in pool.imap(my_func, f, 100):
print(data)
Я просто тестирую это в интерактивном режиме, поэтому ThreadPool будет заменен в окончательной версии.
У меня проблема в том, что для карты или imap в документации сказано:

Этот метод разбивает итерируемый объект на несколько фрагментов, которые отправляются в пул процессов как отдельные задачи.

поскольку мой открытый файл является итерируемым, а каждая итерация представляет собой строку, я ожидал, что это сработает, но почему-то разбиение на фрагменты не работает, и кажется, что строка разбивается посередине.
В качестве обходного пути я сделал генератор, который возвращает строки так, как ожидалось, и он работает, НО:
Я хочу понять, что здесь происходит и зачем вообще нужен генератор? Почему фрагментирование не происходит должным образом на границах строк? Возможно ли это вообще или просто необходим обходной путь генератора?

Подробнее здесь: https://stackoverflow.com/questions/787 ... roccessing

Вернуться в «Python»