Общий массив неверно используется в многопроцессорной среде Python

Я экспериментирую с многопроцессорностью в Python и пытался разделить массив строк между двумя процессами. Вот мой код Python:

from multiprocessing import Process, Array, Value
import ctypes

def f1(a, v):
    for i, l in enumerate(['a', 'b', 'c']):
        a[i] = l*3

    v.value += 1

    print "f1 : ", a[:], v.value

def f2(a,v):

    v.value += 1

    print "f2 : ", a[:], v.value

if __name__ == '__main__':
    val = Value(ctypes.c_int, 0)
    arr = Array(ctypes.c_char_p, 3)

    print "Before :", arr[:], val.value

    p = Process(target=f1, args=(arr, val))
    p2 = Process(target=f2, args=(arr, val))

    p.start()
    p2.start()

    p.join()
    p2.join()

    print "After : ", arr[:], val.value

Когда я запускаю скрипт, я вижу, чтоarr правильно заполнен и доступен вf1() но не вf2(), Вот результат:

    % python /tmp/tests.py
    Before : [None, None, None] 0
    f1 :  ['aaa', 'bbb', 'ccc'] 1
    f2 :  ['\x01', '\x11', '\x01'] 2
    After :  ['\x01', '\x01', '\x01'] 2

Я что-то упустил?

Заранее спасибо за ваш отзыв. :)

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

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