Глобальные переменные и многопроцессорная обработка Python [дубликаты]

Possible Duplicate:
Python multiprocessing global variable updates not returned to parent

Я использую компьютер со многими ядрами, и для повышения производительности я должен использовать более одного. Однако я запутался, почему эти биты кода не выполняют то, что я ожидаю:

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

Так же как

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

Я ожидаю, что результат будет[1, 2, 3, 4, 5] но результат[0, 1, 2, 3, 4].

Должна быть некоторая тонкость, которую мне не хватает при использовании глобальных переменных с процессами. Это даже путь, или я должен избегать попыток изменить переменную таким образом?

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

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