Как работает multiprocessing.Manager () в python?

У меня есть озабоченность по поводу многопроцессорности. Manager () в Python, вот пример,

import multiprocessing 

def f(ns):

    ns.x *=10
    ns.y *= 10

if __name__ == '__main__':
    manager = multiprocessing.Manager()
    ns = manager.Namespace()
    ns.x = 1
    ns.y = 2

    print 'before', ns
    p = multiprocessing.Process(target=f, args=(ns,))
    p.start()
    p.join()
    print 'after', ns

и вывод есть,

before Namespace(x=1, y=2)
after Namespace(x=10, y=20)

До сих пор это работало так, как я ожидал, тогда я модифицировал код следующим образом:

import multiprocessing 

def f(ns):

    ns.x.append(10)
    ns.y.append(10)

if __name__ == '__main__':
    manager = multiprocessing.Manager()
    ns = manager.Namespace()
    ns.x = []
    ns.y = []

    print 'before', ns
    p = multiprocessing.Process(target=f, args=(ns,))
    p.start()
    p.join()
    print 'after', ns

теперь вывод

before Namespace(x=[], y=[])
after Namespace(x=[], y=[])

Меня смутило, почему список не изменился, как я ожидал? Кто-нибудь может помочь мне выяснить, что случилось? Заранее спасибо!

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

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