Python многопроцессорный пул, присоединиться; не ждет, чтобы продолжить?

(1) яя пытаюсь использоватьpool.map с последующимpool.join(), но питон не делаеткажется, ждуpool.map закончить, прежде чем пройти мимоpool.join(), Вот'простой пример того, что ямы пробовали:

from multiprocessing import Pool

foo = {1: []}

def f(x):
    foo[1].append(x)
    print foo

def main():
    pool = Pool()
    pool.map(f, range(100))
    pool.close()
    pool.join()
    print foo

if __name__ == '__main__':
    main()

Распечатка просто{1: []}, как будто питон просто проигнорировалjoin командовать и побежалprint foo прежде чем он имел возможность бежатьf, Ожидаемый результат заключается в том, чтоfoo является{1:[0,1,...,99]}и используя обычный встроенный питонmap дает этот результат. Почему печатается пул версия{1: []}и как я могу изменить свой код, чтобы он печатал намеченный результат?

(2) В идеале ятакже хотел бы определитьfoo в качестве локальной переменной вmain() и передать егоf, но делает это, делаяfoo первый аргументf и используя

pool.map(functools.partial(f, foo), range(100))

производит тот же результат. (и, возможно, также имеет проблему, что каждый процесс теперь имеет свою собственную копиюfoo?) Хотя, опять же, он работает с использованием обычногоmap вместо.

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

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