Я пытаюсь использовать распараллеливание при анализе данных с помощью Python 2.7 с использованием библиотеки многопроцессорной обработки. Задача состоит в том, чтобы прочитать множество больших файлов данных и вернуть их содержимое в виде словаря или списка. Проблема в том, что когда я пытаюсь вернуться из своей функции, отправляя обратно проанализированные данные, моя машина (работающая в Ubuntu Linux) зависает, при этом показатели памяти и загрузки находятся на максимуме.
Код делает что-то вроде этого
import multiprocessing as mp
def worker(filex):
""" reading lots of data """
raw = filter(lambda x: len(x.split())>3,
open(filex).readlines())
data = {}
... # putting all the data in the data dictionary
return data
# multiprocessing options
nproc = mp.cpu_count()
pool = mp.Pool(processes=nproc)
traj = pool.map(worker, tuple(files_to_parse))
pool.close()
Проблема создается большой структурой данных. Интересно, что если я возвращаю что-то еще, код работает, и даже если я передаю эту структуру данных, но она пуста. Использование данных в виде списка вместо словаря не помогло.
Какие-либо предложения?