Uso de memoria multiproceso Python

He escrito un programa que puede resumirse de la siguiente manera:

def loadHugeData():
    #load it
    return data

def processHugeData(data, res_queue):
    for item in data:
        #process it
        res_queue.put(result)
    res_queue.put("END")

def writeOutput(outFile, res_queue):
    with open(outFile, 'w') as f
        res=res_queue.get()
        while res!='END':
            f.write(res)
            res=res_queue.get()

res_queue = multiprocessing.Queue()

if __name__ == '__main__':
    data=loadHugeData()
    p = multiprocessing.Process(target=writeOutput, args=(outFile, res_queue))
    p.start()
    processHugeData(data, res_queue)
    p.join()

El código real (especialmentewriteOutput()) es mucho más complicado.writeOutput() solo utiliza estos valores que toma como sus argumentos (lo que significa que no hace referencia adata)

Básicamente carga un enorme conjunto de datos en la memoria y lo procesa. La escritura de la salida se delega a un subproceso (en realidad se escribe en varios archivos y esto lleva mucho tiempo). Por lo tanto, cada vez que se procesa un elemento de datos, se envía al subproceso a través de res_queue, que a su vez escribe el resultado en archivos según sea necesario.

El subproceso no necesita acceder, leer o modificar los datos cargados porloadHugeData() de cualquier manera. El subproceso solo necesita usar lo que el proceso principal lo envía a través deres_queue. Y esto me lleva a mi problema y pregunta.

Me parece que el subproceso se obtiene en la copia del enorme conjunto de datos (al verificar el uso de la memoria contop). ¿Es esto cierto? Y si es así, ¿cómo puedo evitar la identificación (esencialmente con memoria doble)?

Estoy usando Python 2.6 y el programa se está ejecutando en Linux.

Respuestas a la pregunta(1)

Su respuesta a la pregunta