çoklu işlem: büyük bir salt okunur nesneyi işlemler arasında paylaşmak mı?

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

çoklu işleme yoluyla oluşturulan alt süreçler, programda daha önce oluşturulmuş nesneleri paylaşır mı?

Aşağıdaki kuruluma sahibim:

do_some_processing(filename): for line in file(filename): if line.split(",")[0] in big_lookup_object: # burada bir şey if __name__ == "__main__": big_lookup_object = marshal.load("file.bin") pool = Pool(processes=4) print pool.map(do_some_processing, glob.glob("*.data")) 

Hafıza büyük bir nesne yüklüyorum, ardından o büyük nesneyi kullanması gereken bir işçi havuzu oluşturuyorum. Büyük nesneye salt okunur olarak erişiliyor, buna ihtiyacım yok değişiklikleri işlemler arasında iletin.

Sorum şu: büyük nesne, unix/c'de bir işlem oluşturmuşsam olacağı gibi, paylaşılan belleğe yükleniyor mu, yoksa her işlem kendi kopyasını mı yüklüyor? büyük nesne?

Güncelleme: daha fazla açıklığa kavuşturmak için - big_lookup_object, paylaşılan bir arama nesnesidir. Bunu bölmem ve ayrı olarak işlemem gerekmiyor. Tek bir kopyasını saklamam gerekiyor. Bölmem gereken iş, birçok başka büyük dosyayı okumak ve bu büyük dosyalardaki öğeleri arama nesnesi.

Daha fazla güncelleme: veritabanı iyi bir çözüm, memcached daha iyi bir çözüm olabilir ve diskteki dosya (raf veya dbm) daha da iyi olabilir. bellek çözümü. Nihai çözüm için hadoop kullanacağım, ancak yerel bir bellek içi sürüme de sahip olup olamayacağımı görmek istedim.