Variáveis ​​globais e multiprocessamento do Python [duplicado]

Duplicata Possível:
Atualizações de variáveis ​​globais de multiprocessamento Python não retornadas ao pai

Eu estou usando um computador com muitos núcleos e para benefícios de desempenho eu realmente deveria usar mais de um. No entanto, estou confuso porque esses bits de código não fazem o que eu esperava:

from multiprocessing import Process

var = range(5)
def test_func(i):
    global var
    var[i] += 1

if __name__ == '__main__':
    jobs = []
    for i in xrange(5):
        p = Process(target=test_func,args=(i,))
        jobs.append(p)
        p.start()

print var

Assim como

from multiprocessing import Pool

var = range(5)
def test_func(i):
    global var
    var[i] += 1

if __name__ == '__main__':
    p = Pool()
    for i in xrange(5):
        p.apply_async(test_func,[i])

print var

Eu espero que o resultado seja[1, 2, 3, 4, 5] mas o resultado é[0, 1, 2, 3, 4].

Deve haver alguma sutileza que estou perdendo ao usar variáveis ​​globais com processos. Este é o caminho a percorrer ou devo evitar tentar alterar uma variável dessa maneira?

questionAnswers(1)

yourAnswerToTheQuestion