Многопроцессорность и память Python

я используюmultiprocessing.imap_unordered выполнить вычисления по списку значений:

def process_parallel(fnc, some_list):
    pool = multiprocessing.Pool()
    for result in pool.imap_unordered(fnc, some_list):
        for x in result:
            yield x
    pool.terminate()

Каждый звонокfnc возвращает ОГРОМНЫЙ объект в результате, по замыслу. Я могу хранить N экземпляров такого объекта в оперативной памяти, где N ~ cpu_count, но не намного (не сотни).

Теперь использование этой функции занимает слишком много памяти. Память целиком и полностью расходуется на основной процесс, а не на рабочих.

Какimap_unordered сохранить готовые результаты? Я имею в виду результаты, которые уже были возвращены работниками, но еще не переданы пользователю. Я думал, что это было умно и только вычислил их "лениво" по мере необходимости, но, видимо, нет.

Похоже, так как я не могу потреблять результатыprocess_parallel достаточно быстро, бассейн продолжает стоять в очереди эти огромные объекты изfnc где-то внутри, а потом взрывается. Есть ли способ избежать этого? Ограничить свою внутреннюю очередь как-нибудь?

Я использую Python2.7. Приветствия.

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

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