Использование многопроцессорной памяти Python

Я написал программу, которая может быть кратко изложена следующим образом:

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()

Настоящий код (особенноwriteOutput()) намного сложнее.writeOutput() использует только те значения, которые он принимает в качестве аргументов (то есть он не ссылается наdata)

В основном он загружает в память огромный набор данных и обрабатывает его. Запись выходных данных делегируется подпроцессу (на самом деле он записывает в несколько файлов, и это занимает много времени). Таким образом, каждый раз, когда обрабатывается один элемент данных, он отправляется подпроцессу res_queue, который, в свою очередь, записывает результат в файлы по мере необходимости.

Подпроцесс не нуждается в доступе, чтении или изменении данных, загруженныхloadHugeData() в любом случае. Подпроцесс должен использовать только то, что основной процесс отправляет черезres_queue, И это приводит меня к моей проблеме и вопросу.

Мне кажется, что подпроцесс получает его на копии огромного набора данных (при проверке использования памяти сtop). Это правда? И если так, то как я могу избежать идентификатора (используя двойную память по существу)?

Я использую Python 2.6 и программа работает на Linux.

Ответы на вопрос(1)

Ваш ответ на вопрос