wieloprocesorowość: współdzielenie dużego obiektu tylko do odczytu między procesami?

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

Czy procesy potomne utworzone przez wieloprocesowe współdzielą obiekty utworzone wcześniej w programie?

Mam następującą konfigurację:

do_some_processing(filename): for line in file(filename): if line.split(",")[0] in big_lookup_object: # coś tutaj, jeśli __name__ == "__main__": big_lookup_object = marshal.load("file.bin") pool = Pool(processes=4) print pool.map(do_some_processing, glob.glob("*.data")) 

Ładuję duży obiekt do pamięci, a następnie tworzę pulę pracowników, którzy muszą wykorzystać ten duży obiekt. Duży obiekt jest dostępny tylko do odczytu, nie muszę przekazywać jego modyfikacje między procesami.

Moje pytanie brzmi: czy duży obiekt jest ładowany do pamięci współdzielonej, tak jak gdybym odrodził proces w unix/c, czy też każdy proces ładuje własną kopię duży obiekt?

Aktualizacja: dokładniejsze wyjaśnienie — big_lookup_object to współdzielony obiekt wyszukiwania. Nie muszę dzielić tego i przetwarzać osobno. Muszę zachować jedną kopię. Praca, którą muszę podzielić, to odczytywanie wielu innych dużych plików i wyszukiwanie elementów w tych dużych plikach względem lookup object.

Dalsza aktualizacja: baza danych to dobre rozwiązanie, memcached może być lepszym rozwiązaniem, a plik na dysku (półka lub dbm) może być jeszcze lepszy. rozwiązanie pamięci. Do ostatecznego rozwiązania użyję hadoop, ale chciałem sprawdzić, czy mogę mieć również lokalną wersję w pamięci.