многопроцессорность: совместное использование большого объекта только для чтения между процессами?

| | | | | | | | | | | | | | | | | | | | | | | | |

Дочерние процессы, созданные с помощью многопроцессорной обработки, совместно используют объекты, созданные ранее в программе?

У меня есть следующая настройка:

do_some_processing(filename): for line in file(filename): if line.split(",")[0] in big_lookup_object: # что-то здесь, если __name__ == "__main__": big_lookup_object = marshal.load("file.bin") pool = Pool(processes=4) print pool.map(do_some_processing, glob.glob("*.data")) 

Я загружаю какой-то большой объект в память, а затем создаю пул рабочих процессов, которым нужно использовать этот большой объект. Доступ к большому объекту доступен только для чтения, мне не нужно передавать его модификации между процессами.

Мой вопрос: загружается ли большой объект в разделяемую память, как это было бы, если бы я породил процесс в unix/c, или каждый процесс загружает свою собственную копию большой объект?

Обновление: чтобы уточнить: big_lookup_object — это общий объект поиска. Мне не нужно разбивать его и обрабатывать отдельно. Мне нужно сохранить его единственную копию. Работа, которую мне нужно разбить, — это чтение большого количества других больших файлов и поиск элементов в этих больших файлах по сравнению с объект поиска.

Дополнительное обновление: база данных — прекрасное решение, memcached может быть лучшим решением, а файл на диске (полка или dbm) может быть еще лучше. В этом вопросе меня особенно интересовал in Решение для памяти. В качестве окончательного решения я буду использовать Hadoop, но я хотел посмотреть, смогу ли я также иметь локальную версию в памяти.