Я' м с использованием многопроцессорной обработки.
Код: Выделить всё
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)
У меня проблема в том, что для карты или imap в документации сказано:
Этот метод разбивает итерируемый объект на несколько фрагментов, которые отправляются в пул процессов как отдельные задачи.
поскольку мой открытый файл является итерируемым, а каждая итерация представляет собой строку, я ожидал, что это сработает, но почему-то разбиение на фрагменты не работает, и кажется, что строка разбивается посередине.
В качестве обходного пути я сделал генератор, который возвращает строки так, как ожидалось, и он работает, НО:
Я хочу понять, что здесь происходит и зачем вообще нужен генератор? Почему фрагментирование не происходит должным образом на границах строк? Возможно ли это вообще или просто необходим обходной путь генератора?
Подробнее здесь: https://stackoverflow.com/questions/787 ... roccessing