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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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