multiprocessamento com dados grandes

estou usandomultiprocessing.Pool() para paralelizar alguns cálculos pesados.

A função de destino retorna muitos dados (uma lista enorme). Estou ficando sem RAM.

Semmultiprocessing, Eu acabei de mudar a função alvo em um gerador, poryieldos elementos resultantes, um após o outro, como são calculados.

Eu entendo que o multiprocessamento não suporta geradores - ele aguarda a saída inteira e a retorna de uma só vez, certo? Não rendendo. Existe uma maneira de fazer oPool Trabalhadores produzem dados assim que ficam disponíveis, sem construir toda a matriz de resultados na RAM?

Exemplo simples:

def target_fnc(arg):
   result = []
   for i in xrange(1000000):
       result.append('dvsdbdfbngd') # <== would like to just use yield!
   return result

def process_args(some_args):
    pool = Pool(16)
    for result in pool.imap_unordered(target_fnc, some_args):
        for element in result:
            yield element

Este é o Python 2.7.

questionAnswers(3)

yourAnswerToTheQuestion